0

我正面临着一个非常奇怪的现象memcpymemcpy我已经分配了一个 2GB 大小的数据指针,但是当我的指针偏移量超过 1666800 字节时,我似乎无法做到这一点。这是代码

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,如之前分配的那样。

我真的对此感到困惑并且不知道。

4

1 回答 1

0

所以我修改了代码并摆脱了malloc铸造。

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

似乎memcpy现在工作正常。但是为什么一定不能投malloc呢?

于 2012-12-12T03:42:03.600 回答