I am getting wrong memcpy
log .
i want to take *q
(pointer on array in size inNumberOfFrames
) .
i want to copy it each time to a new array buffersRing[ringNum][inNumberOfFrames]
.
when in buffersRing[ringNum][0]
i save q's size- inNumberOfFrames
, and the rest of q is saved into buffersRing[ringNum][1]-buffersRing[ringNum][inNumberOfFrames]
.
i do :
buffersRing[ringNum][0]=inNumberFrames;
memcpy(buffersRing[ringNum]+1, q, inNumberFrames);
i get wrong values. whats wrong here ?
EDIT:
but doing this instead of copy -works great :
for( int k=1;k<inNumberFrames+1;k++)
buffersRing[ringNum][k]=q[k-1];
I believe the call to memcpy()
should be:
memcpy(buffersRing[ringNum]+1, q, inNumberFrames * sizeof *q);
since you want to copy inNumberFrames
times the number of bytes occupied by one element of q
.