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

不,在编译时没有检测到这样的错误,因为在实践中这种检测只会触发最简单的情况,例如你的例子。