Memcpy带有未签名的短*

时间:2019-04-30 08:53:02

标签: c

我有循环

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

我不知道为什么有时我的价值会被错误地初始化。

1 个答案:

答案 0 :(得分:1)

要让memcpy知道要复制多少数据,您需要指定元素数乘以每个元素的大小:

memcpy(pDest, srcBuffer, size * sizeof(unsigned short));