我错了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];
答案 0 :(得分:0)
我相信对memcpy()
的调用应该是:
memcpy(buffersRing[ringNum]+1, q, inNumberFrames * sizeof *q);
因为您希望将inNumberFrames
复制q
的一个元素占用的字节数。
答案 1 :(得分:0)
您memcpy
来电的来源和目的地似乎重叠。
在这种情况下,您应该致电memmove
。