我正在尝试将连续数据块从主内存中的一个位置复制到另一个位置。这是我到目前为止所做的,但它不起作用。似乎在应用'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);
}
建议和建议表示赞赏。
由于
Roronoa Zoro
答案 0 :(得分:8)
我看到的第一个问题是:
memcpy (pTestDump, pImage, 204800);
应该是这样的:
memcpy (pTestDump, pImage, 204800 * sizeof(int));
您忘记了sizeof(int)
,因此您只复制了部分数据。
另一个问题是您在memcpy()
中切换了操作数的顺序。目的地是第一个操作数:
memcpy (pImage, pTestDump, 204800 * sizeof(int));
答案 1 :(得分:4)
似乎在应用'memcpy'之后,我的数组'testDump'的内容变为全零。
//copy content from pTestDump to pImage
memcpy (pTestDump, pImage, 204800);
关于评论的论点是相反的。我想你的意思如下。
//copy content from pTestDump to pImage
memcpy (pImage, pTestDump, 204800*sizeof(int));