继续得到堆栈粉碎错误

ede*_*iss 0 c

我有一个101的缓冲区

 char buffer[101]
Run Code Online (Sandbox Code Playgroud)

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

 int i;
 for(i=0;i<sizeof(buffer);i+=4)
     *(long*)&buffer[i] = address
Run Code Online (Sandbox Code Playgroud)

其中地址类型为long.

但是当我运行它时,我遇到了堆栈粉碎检测.知道为什么吗?

Dan*_*her 7

除了对齐问题,

 for(i=0;i<sizeof(buffer);i+=4)
     *(long*)&buffer[i] = address
Run Code Online (Sandbox Code Playgroud)

i == 100你写过分配的缓冲区时.你应该什么时候停止i > sizeof buffer - 4.