所以问题很简单,有没有办法告诉GCC我是否想要在没有释放堆分配块的情况下收到警告?我知道我们可以为某些目的使用非释放块/我们已经达到程序结束或类似的东西。
int main(){
int *a = malloc(sizeof(int));
return 0;
}
如果我能得到警告,那就太棒了。
答案 0 :(得分:3)
GCC不是一个可能的工作。静态分析不能证明免费被遗忘,这是运行时分析器的工作,如valgrind's memcheck,或最终gcc -fsanitize=leak
,我还没有看到yet,只有{ {3}}
但是即使gcc或clang支持它,你也不会收到编译时警告。这将是一个运行时警告。
答案 1 :(得分:2)
编译器无法预测和警告未释放的块。这是运行时作业,而不是编译时。您可以实现自己的malloc-free-check子系统或修改内存管理库。