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 回答