3

コードで:

int nsize;
int * buffer;
char TargetBuffer[4096];
const SIZE_T buffersize = (320*240) * sizeof(int);


buffer = (int *) malloc(bufferSize);
// fill buffer with data

nsize = 0;
while(nsize < buffersize)
{
    // HERE after some loops i get Access Violation
    memcpy(TargetBuffer, buffer + nsize, 4096);


    // do stuff with TargetBuffer
    nsize += 4096;
}

アクセス違反が発生するのはなぜですか? 何を変更すればよいですか?

4

3 に答える 3

9

追加するときは、ポインター演算を行っているときであるため、buffer + nsize実際に追加していることを認識する必要があります。buffer + (nsize * (sizeof(int))int *

だからきっと何か関係があるのだろう。nsize をインクリメントするnsize += 4096/sizeof(int)か、もっと賢い方法でインクリメントしてみてください。

于 2013-01-24T13:08:23.410 に答える
0

whileループを次のように更新します

while(nsize < (buffersize/sizeof(int))

bufferints用ではありませんcharintの一部ではないメモリからカウントしてコピーしていますbuffer

于 2013-01-24T13:13:18.297 に答える