malloc的内存上的memcpy运行不正常

时间:2012-12-12 03:28:45

标签: c malloc memcpy

我面临一个非常奇怪的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,如前所述。

我真的对此感到困惑,并且没有任何线索。

1 个答案:

答案 0 :(得分:0)

所以我修改了代码并摆脱了malloc施法。

void *dataMem;
dataMem = malloc(memsize * 1000000);

似乎memcpy现在正常运作。但是为什么我们不能施展malloc