我在linux上使用gcc 4.8.5。我想使用地址杀毒软件,但它不返回任何有关程序的信息。标志:
SET(CMAKE_CXX_FLAGS "-Wall -Wno-error -g -std=c++11 -fno-omit-frame-pointer -fsanitize=address")
SET(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -fno-omit-frame-pointer -fsanitize=address")
链接库:
target_link_libraries(testcpp asan)
内存泄漏的测试程序:
int main()
{
int *prt = new int;
return 0;
}
怎么了?
2条答案
按热度按时间cbeh67ev1#
我用GCC 7在最近的Debian/Sid/x86-64上编译了这个
使用
并且在执行
./irbis
时正确地检测到泄漏:所以升级你的GCC编译器(至少升级到GCC 6)。我知道GCC4.8对地址消毒器和C++11的支持不完整(顺便说一句,GCC4.8已经过时了,GCC 5也是如此,在2017年11月)。
r7knjye22#
问题的原因可能是main没有使用
ptr
,所以它可能被完全优化了。