是也保护基于堆的内存分配,还是只保护基于堆栈的内存分配?
前2个和-fmudflap有什么不同?
对于哪一个更适合调试,有什么建议吗?
(我不确定gcc man page是否足够清楚,或者我只是不理解它……)
char foobar[10]; // stack-based
char *foobar = malloc(10); // heap-based发布于 2011-10-19 00:51:58
Mudflap是用于指针检查的。参见this pdf。您需要安装相关的库才能使用这些gcc功能。我更喜欢valgrind来检测这样的错误,因为它不需要重新编译/重新链接,而且更容易使用,但这些也是有价值的。
发布于 2011-10-19 01:55:22
-fstack-protector和-fstack-protector-都与堆分配无关。
fstack-protector仅保护字符串(缓冲区溢出攻击的主要问题目标),-fstack-protector-all保护所有类型。这里有一些描述:http://en.wikipedia.org/wiki/Buffer_overflow_protection
https://stackoverflow.com/questions/7810036
复制相似问题