本文主要是介绍gcc:通过ASAN检查内存泄漏,溢出等问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
C/C++项目最大的一个隐患就是有时会出现内存泄漏,内存溢出等问题。
ASAN是谷歌退出的一个内存检查工具,已经被集成到了gcc_v4.8以上版本中,使用起来也十分的方便,只需在编译和连接中加入编译选项-fsanitize=address即可,同时为了能更加容易的定位到错误发生的位置,建议使用-g选项,此外还可以通过-fno-omit-frame-pointer改善报告的堆栈信息。
以下举例说明ASAN的强大检测功能:
1.检测内存泄漏
//a.cpp
void* a()
{return new int;
}//m.cpp
void* a();int main()
{a();return 0;
}编译每个文件并连接
g++ -fsanitize=address -g -c a.cpp
g++ -fsanitize=address -g -c m.cpp
g++ -fsanitize=address -g -o m a.o m.o也可以一次性编译
g++ -fsanitize=address -g -o m a.cpp m.cpp$ ./m
===============================================================
这篇关于gcc:通过ASAN检查内存泄漏,溢出等问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!