我面临一个非常奇怪的memcpy
现象。我已经分配了一个2GB大小的数据指针,但是当我对指针的偏移超过1666800字节时,我似乎无法做memcpy
。这是代码
dataMem = (struct dataRecord*) malloc(memsize * 1000000); // where memsize is 2000
... loop condition ...
{
memcpy(dataMem + (dataCount * sizeof(struct dataRecord)), mesg, sizeof(struct dataRecord));
dataCount++;
}
其中sizeof(struct dataRecord)
是1200字节,dataCount
是1389.它应该是dataMem + 1666800
,偏移量仍然远远超过2000000000,如前所述。
我真的对此感到困惑,并且没有任何线索。
答案 0 :(得分:0)
所以我修改了代码并摆脱了malloc
施法。
void *dataMem;
dataMem = malloc(memsize * 1000000);
似乎memcpy
现在正常运作。但是为什么我们不能施展malloc
?