Search code examples
cmemcpy

wrong memcpy starting from index 1


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];

Solution

  • 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.