GCC中是否有任何编译器选项可以在编译时检查内存错误?
我正在编译这个程序,编译顺利。 我执行它的那一刻,它失败了free(): invalid pointer
错误。
#include #include int main(void) { char *p = NULL; if ((p = (char *) malloc((int)sizeof(char) * 100)) == NULL) { printf("ERROR: unable to allocate memory\n"); return -1; } p += 50; free(p); return 0; }
我使用gcc -o memtest mc
命令编译。
是否有任何GCC
编译器选项会在编译期间给出关于这些无效指针错误的警告/错误/指示?
不。使用电围栏或Valgrind 。
编译时没有,运行时 – 是的: http : //gcc.gnu.org/wiki/Mudflap_Pointer_Debugging
编译时最接近的是: http : //gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html
不,在编译时没有检测到这样的错误,因为在实践中这种检测只会触发最简单的情况,例如你的例子。