从索引1开始的错误memcpy

时间:2013-01-21 17:46:39

标签: c memcpy

我错了memcpy log。

我想采用*q(大小为inNumberOfFrames的数组上的指针)。

我希望每次都将它复制到新的数组buffersRing[ringNum][inNumberOfFrames]

buffersRing[ringNum][0]中我保存q的大小 - inNumberOfFrames,其余的q保存到buffersRing[ringNum][1]-buffersRing[ringNum][inNumberOfFrames]

我做:

buffersRing[ringNum][0]=inNumberFrames;
memcpy(buffersRing[ringNum]+1, q, inNumberFrames);

我得到了错误的价值观。什么错了?

编辑:

但这样做而不是复制 - 伟大的工作:

 for( int k=1;k<inNumberFrames+1;k++)
     buffersRing[ringNum][k]=q[k-1];

2 个答案:

答案 0 :(得分:0)

我相信对memcpy()的调用应该是:

memcpy(buffersRing[ringNum]+1, q, inNumberFrames * sizeof *q);

因为您希望将inNumberFrames复制q的一个元素占用的字节数。

答案 1 :(得分:0)

memcpy来电的来源和目的地似乎重叠。

在这种情况下,您应该致电memmove