使用此简单代码
1 #include <stdio.h>
2 #include <stdlib.h>
3 int main(){
4 int n = 3;
5 printf("%d \n", n);
6 return 0;
7 }
我收到此泄漏
我不知道该如何解决。我已经看过这篇文章Is my valgrind installation broken?,但我不明白如何解决。我有一个MacOS High Sierra 10.13.6https://i.stack.imgur.com/mX4NC.png
首先使用--gen-suppressions=all
运行Valgrind,并在注释中给出了泄漏选项。您可能还想使用--log-file=my.log
或类似的东西。
然后查看输出。您会看到类似
的内容{
<insert_a_suppression_name_here>
Memcheck:Leak
[leak type]
[callstack]
}
将此文本复制到“ mysuppressions.supp”之类的文件中,将<insert_a_suppression_name_here>
行重命名为有意义且唯一的内容。棘手的一点是选择要复制的调用堆栈部分。如果您复制太多行,则抑制将仅适用于您的特定情况。如果复制的行数太少,则抑制范围将太广,并且您可能会冒误报的风险。通常,您不希望抑制包含任何功能,仅包含系统功能。
使用抑制文件最后运行Valgrind
valgrind --suppressions=mysuppressions.sup ./bru.exe