0

我得到错误的memcpy日志。

我想取*q(指针大小的数组inNumberOfFrames)。

我想每次都将它复制到一个新数组buffersRing[ringNum][inNumberOfFrames]中。

buffersRing[ringNum][0]我保存 q 的大小时,q 的inNumberOfFrames其余部分保存到 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];
4

2 回答 2

0

我相信呼吁memcpy()应该是:

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

因为您要复制.inNumberFrames的一个元素占用的字节数q

于 2013-01-21T17:58:47.430 回答
0

看起来您的memcpy呼叫的来源和目的地确实重叠。

memmove在这种情况下你应该打电话。

于 2013-01-21T17:59:45.750 回答