Memcpy с неподписанным коротким * - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть петля

for(unsigned int i = 0; i < size; ++i)
        {
           pDest[i] = pSource[i]; // Both are unsigned short *
        }
}

Я копирую содержимое pSource в pDest, и это работает. pDest и pSource имеют короткие значения без знака *. Я должен был улучшить это для цикла, так что я пользователь 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 (без знака)

memcpy(pDest, srcBuffer, size);

И это работа !! но иногда все мои значения равны 0-0-0

Понятия не имею, почему мои ценности иногда плохи.

1 Ответ

1 голос
/ 30 апреля 2019

Чтобы memcpy знал, сколько данных копировать, вам нужно указать количество элементов, умноженное на размер каждого элемента:

memcpy(pDest, srcBuffer, size * sizeof(unsigned short));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...