求各位大神解惑,为什么会出现访问冲突.
从pbuf到pbnewbuf,tmp的大小就是pbuf指向的内存大小,并没有越界.
读取32位的文件一直都没有问题,为什么读取64位的文件就会有冲突呢.memmove和memcpy都不行.明明拷贝的目的地是pnewbuf,开始地址0x119f040 为何冲突位置会是0x119efa0呢.
0x78FA42C0处 的(vcruntime140d.dll),这个dll搜了一下,不知道有啥用,字面意思是VC运行相关的,可这和我内存拷贝有啥关系呢?请大神解惑
PCHAR AddNewSection(PCHAR pbuf)
{
//pbnewbuf为全局变量,其它模块已经赋过值了
PCHAR pbnewbuf;
CHAR st_name[IMAGE_SIZEOF_SHORT_NAME] = ".NewSec";
DWORD tmp = buffersize;
buffersize += NEWSECTIONSIZE; //NEWSECTIONSIZE为定义的宏常量 0x1000
//开辟新内存
pbnewbuf = (PCHAR)malloc(buffersize);
if (!pbnewbuf)
{
fprintf(stderr, "开辟内存失败!\n");
return pbnewbuf;
}
memset(pbnewbuf, 0, buffersize);
// 拷贝filebuf到newbuf
memmove(pbnewbuf, pbuf, tmp);