最近一直在考虑怎么检测 C++ 的内存泄露问题,虽然说用了智能指针能有效缓解,但是还是很担心内存泄露,后面学高数的时候刷 YouTube 发现了这个视频:教程视频
确实,如果 Arm Mac 上没有内存泄露检测工具,那么苹果公司的人要如何调试呢 😂
这里就借用这个视频中的方案来解决 C++ 内存泄露。
假如说我们现在有这么一个会内存泄露的代码:
然后用以下命令编译
clang++ main.cc -o main -g -std=c++17
在这个地方一定要注意编译的时候要带上 -g 参数提供源代码信息。这样才能让检测工具知道是源代码第几行有问题
最后我们用这个命令来执行内存泄露检测:
leaks --atExit -- ./main
最后可以看到内存泄露报告
可以看到在源代码中的第 19 行、第 20 行、第 21 行的分配的内存因为没有被及时回收被检测出来了。