-fstack-protector,-fstack-protector-all和-fmudflap

Jan*_*son 6 c linux gcc

-fstack-protector和-fstack-protector-all是保护基于堆的内存分配还是仅保护基于堆栈的内存分配?

前2和-fmudflap有什么区别?

关于哪个更适合调试的任何建议?

(我不确定gcc手册页是否足够清晰,或者我根本不理解它......)

char foobar[10]; // stack-based

char *foobar = malloc(10); // heap-based
Run Code Online (Sandbox Code Playgroud)

b0t*_*0ti -1

Mudflap 用于指针检查。请参阅此 pdf。您需要安装相关的库才能使用这些 gcc 功能。我更喜欢 valgrind 来检测此类错误,因为不需要重新编译/重新链接并且更易于使用,但这些也很有价值。