我有循环
for(unsigned int i = 0; i < size; ++i)
{
pDest[i] = pSource[i]; // Both are unsigned short *
}
}
我将pSource的内容复制到pDest中,并且可以正常工作。 pDest和pSource均为无符号短*。 我已经对此for循环进行了改进,因此我可以并行使用omp。
#pragma omp parallel for shared(pDest, srcBuffer)
我尝试对memcpy使用另一种方法,但我的pDest值不正确
memcpy(pDest, srcBuffer, sizeof(unsigned short)); // I copy srcBuffer into pDest and the size of the bytes are unsigned short because pDest and srcBuffer are unsigned short *
我的第一个pDest值是: 83-47039-0 应该是: 83-86-77
我的第一个值是正确的,所以也许memcpy的最后一个参数是错误的? 我尝试提供我的尺寸而不是sizeof(unsigned short)
memcpy(pDest, srcBuffer, size);
就是这样!但有时我所有的值都等于0-0-0
我不知道为什么有时我的价值会被错误地初始化。
答案 0 :(得分:1)
要让memcpy
知道要复制多少数据,您需要指定元素数乘以每个元素的大小:
memcpy(pDest, srcBuffer, size * sizeof(unsigned short));