Проблема с memcpy - PullRequest
       4

Проблема с memcpy

0 голосов
/ 25 сентября 2011

Я работаю в Cocoa / Xcode и у меня есть массив int *, содержащий значения. Когда я хочу использовать memcpy для сдвига значений в массиве, он передает только 0 с.

, например

  • Массив содержит значения как 1 2 3 4
  • memcpy(array,array+2*sizeof(int),2*sizeof(int));

результат: 0,0,3,4

Есть ли лучшая альтернатива memcpy, или я что-то не так делаю?

Ответы [ 2 ]

7 голосов
/ 25 сентября 2011

Я думаю, что правильный способ сделать то, что вы хотите:

memcpy(array, array + 2, 2*sizeof(int));

Это потому, что во втором аргументе указателя memcpy выполняется арифметика, и все, что добавляется в указатель «массива», считается кратным целому размеру. Таким образом, в данном случае выражение «массив + 2» означает «целочисленный указатель« массив »плюс двукратный размер целого числа».

0 голосов
/ 25 сентября 2011

Справочная страница к memcpy говорит, что регионы не должны перекрываться. Вместо этого попробуйте memmove.

...