我正在尝试将连续数据块从主内存中的一个位置复制到另一个位置.这是我到目前为止所做的,但它不起作用.似乎在应用'memcpy'之后,我的数组'testDump'的内容变为全零.
//Initialize array to store pixel values of a 640x480 image
int testDump[204800];
for(int k = 0; k<204800; k++)
testDump[k] = -9;
//pImage is a pointer to the first pixel of an image
pImage = dmd.Data();
//pTestDump is a pointer to the first element in the array
int* pTestDump = testDump;
//copy content from pImage to pTestDump
memcpy (pTestDump, pImage, 204800);
for(int px_1 = 0; px_1<300; px_1++)
{
std::cout<<"Add of pPixel: "<<pImage+px_1<<", content: "<<*(pImage+px_1);
std::cout<<"Add of testDump: "<<pTestDump+px_1<<", content: "<<*(pTestDump+px_1);
}
Run Code Online (Sandbox Code Playgroud)
建议和建议表示赞赏.
谢谢
Roronoa Zoro
我看到的第一个问题是:
memcpy (pTestDump, pImage, 204800);
Run Code Online (Sandbox Code Playgroud)
应该这样:
memcpy (pTestDump, pImage, 204800 * sizeof(int));
Run Code Online (Sandbox Code Playgroud)
你忘记了,sizeof(int)所以你只是复制了一部分数据.
另一个问题是你切换了操作数的顺序memcpy().目的地是第一个操作数:
memcpy (pImage, pTestDump, 204800 * sizeof(int));
Run Code Online (Sandbox Code Playgroud)