c - -fstack-protector、-fstack-protector-all 和 -fmudflap

标签 c linux gcc

-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/

相关文章:

c++ - 有没有办法在 Linux 上将文本输出到不同颜色的文件?

c++ - 记忆一下从 C++ 到 C 的结构

有人可以向我解释一下使用 malloc 作为指针的情况吗

c - G-WAN 在使用 mongoDB 时表现异常

linux - 在 Syslog 工具上禁用最后一条消息重复 X 次

linux - vim:调整拆分窗口大小的快捷方式

c++ - 大括号初始化与括号错误

c - 如何检查存储在变量中的给定文件描述符是否仍然有效?

android - 如何为 android 编译 GCC?

c - 为什么使用指向指针的指针时 scanf 可以正常工作?