我记错了memcpy日志。

我想使用*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);


我得到错误的值。这是怎么了?

编辑:

但是这样做而不是copy-works great:

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

最佳答案

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

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


因为您要复制inNumberFrames乘以q的一个元素所占用的字节数。

关于c - 从索引1开始的错误memcpy,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14444362/

10-09 13:33