0

サイズ101のバッファがあります

 char buffer[101]

アドレスを配列にコピーしようとしています

 int i;
 for(i=0;i<sizeof(buffer);i+=4)
     *(long*)&buffer[i] = address

このアドレスは long 型です。

ただし、実行中にスタック破壊検出に遭遇しました。理由はありますか?

4

1 に答える 1

7

アライメントの問題はさておき、

 for(i=0;i<sizeof(buffer);i+=4)
     *(long*)&buffer[i] = address

i == 100割り当てられたバッファを超えて書き込むとき。いつ停止する必要がありますi > sizeof buffer - 4

于 2012-10-06T14:47:49.257 に答える