-fstack-protector 和 -fstack-protector-all 是保护基于堆的内存分配还是只保护基于堆栈的内存分配?
前两个和 -fmudflap 有什么区别?
关于哪个更适合调试有什么建议吗?
(我不确定 gcc man page 是否足够清楚,或者我根本不明白...)
char foobar[10]; // stack-based
char *foobar = malloc(10); // heap-based
最佳答案
-fstack-protector 和 -fstack-protector-all 与堆分配无关。
-fstack-protector 仅保护字符串(缓冲区溢出攻击的主要问题目标),-fstack-protector-all 保护所有类型。这里的一些描述:
http://en.wikipedia.org/wiki/Buffer_overflow_protection
关于c - -fstack-protector、-fstack-protector-all 和 -fmudflap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7810036/