继续得到堆栈粉碎错误

时间:2012-10-06 14:43:34

标签: c

我有一个101的缓冲区

 char buffer[101]

我正在尝试将地址复制到数组

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

哪个地址的类型为long。

然而,当我运行它时,我遇到了堆栈粉碎检测。知道为什么吗?

1 个答案:

答案 0 :(得分:7)

除了对齐问题,

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

i == 100写入已分配的缓冲区时。你应该在i > sizeof buffer - 4时停止。