zz http://blog.csdn.net/white_eyes/article/details/7168062
Ubuntu下面的GCC默认开启了Stack Smashing Protector,如果想在这个系统中学习缓冲区溢出的原理,在编译时要加上fno-stack-protector选项,否则运行时会出现*** stack smashing detected ***: xxx terminated,而不是期望的Segmentation fault。同时还需要加上允许栈执行的选项。
gcc -fno-stack-protector -z execstack -ggdb -o xxx xxx.c
-mpreferred-stack-boundary=2可用于指定边界对齐字节数