0
我有大小101的緩衝也能收到堆棧溢出錯誤
char buffer[101]
我想一個地址複製到陣列
int i;
for(i=0;i<sizeof(buffer);i+=4)
*(long*)&buffer[i] = address
在地址的類型爲long。
但是當我運行它時,我遇到了堆棧粉碎檢測。任何想法爲什麼?拋開
我有大小101的緩衝也能收到堆棧溢出錯誤
char buffer[101]
我想一個地址複製到陣列
int i;
for(i=0;i<sizeof(buffer);i+=4)
*(long*)&buffer[i] = address
在地址的類型爲long。
但是當我運行它時,我遇到了堆棧粉碎檢測。任何想法爲什麼?拋開
對齊問題,
for(i=0;i<sizeof(buffer);i+=4)
*(long*)&buffer[i] = address
時
i == 100
你寫過去分配的緩衝區
。你應該停止當i > sizeof buffer - 4
。
因爲你的'buffer'不能被'sizeof long'整除,並且最後一次訪問超出界限。 – DCoder