内存检测方式
gcc/g++ 内存检测方式如下,添加一些编译标签:
- -fsanitize=leak 检测内存泄漏。例如添加标签:-fsanitize=leak -g -O0
- -fsanitize=thread 检测多线程竞争导致的内存问题(不能跟其他标签一起使用)
- -fsanitize=address 检测内存越界。例如添加标签:-fsanitize=address -g -O2,优化级别开启 O2 也可以检测到
- -fsanitize=undefined 检测未定义的行为,例如:使用未初始化的变量、除 0、空指针解引用等
举例,空指针解引用对比图:
加上标签
不加标签