首页 > 解决方案 > 无符号短的 Memcpy *

问题描述

我有我的循环

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

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

标签: c

解决方案


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

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

推荐阅读