所以问题很简单,有没有办法告诉GCC,如果我不释放堆分配块,我想得到警告?我知道我们可以为某些目的使用非释放块/我们已经达到程序结束或类似的东西.
int main(){
int *a = malloc(sizeof(int));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我能得到警告,即使这样也会很棒.
这不是 GCC 能够完成的工作。静态分析无法证明 free 被遗忘,这是运行时分析器(如valgrind 的memcheck)的工作,或者最终,我还gcc -fsanitize=leak
没有在那里看到,只有clang -fsanitize=leak。
但即使 gcc 或 clang 支持它,您也不会收到编译时警告。这将是一个运行时警告。