我正在做一个学校项目,主要是想了解堆栈溢出的知识。我正在处理的一些示例代码如下(已经简化):
char test[10];
int i;
for (i=0;i < 10000;i++) {
test[i] = 'a';
}
当我使用gcc编译时,一切都很顺利。gcc会自动保护堆栈,永远不会让它溢出。现在,如果我尝试使用gcc -fno-stack-protector,同样的程序也可以运行。我甚至对汇编文件进行了比较(使用-S选项),它们是相同的。这是怎么回事?我查看了man页面,没有提到-fno-stack选项...所有在线资料都指向-fno-stack-protector选项,但我根本无法再现任何东西...
谢谢您的帮助。 :)
-fstack-protector
,是吗? - rogerdpack