GCC警告未释放的堆块

时间:2016-04-24 11:33:48

标签: c gcc gcc-warning

所以问题很简单,有没有办法告诉GCC我是否想要在没有释放堆分配块的情况下收到警告?我知道我们可以为某些目的使用非释放块/我们已经达到程序结束或类似的东西。

int main(){
    int *a = malloc(sizeof(int));
    return 0;
}

如果我能得到警告,那就太棒了。

2 个答案:

答案 0 :(得分:3)

GCC不是一个可能的工作。静态分析不能证明免费被遗忘,这是运行时分析器的工作,如valgrind's memcheck,或最终gcc -fsanitize=leak,我还没有看到yet,只有{ {3}}

但是即使gcc或clang支持它,你也不会收到编译时警告。这将是一个运行时警告。

答案 1 :(得分:2)

编译器无法预测和警告未释放的块。这是运行时作业,而不是编译时。您可以实现自己的malloc-free-check子系统或修改内存管理库。