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