我有一个101的缓冲区
char buffer[101]
我正在尝试将地址复制到数组
int i;
for(i=0;i<sizeof(buffer);i+=4)
*(long*)&buffer[i] = address
哪个地址的类型为long。
然而,当我运行它时,我遇到了堆栈粉碎检测。知道为什么吗?
答案 0 :(得分:7)
除了对齐问题,
for(i=0;i<sizeof(buffer);i+=4)
*(long*)&buffer[i] = address
当i == 100
写入已分配的缓冲区时。你应该在i > sizeof buffer - 4
时停止。