gpt4 book ai didi

c++ - valgrind 改变二进制行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:54 24 4
gpt4 key购买 nike

我尝试使用 valgrind 追踪 C++ 程序中的内存泄漏。该程序是用 g++ 编译的,可以运行而不会抛出任何错误。不幸的是,valgrind 以一种在抛出运行时错误后崩溃的方式改变了我的程序的行为。由于此崩溃发生在到达代码的相关部分之前,我没有机会追踪我的内存泄漏。

整个问题由附加的控制台输出说明。

myUser@computer:~$ ./myProgram input.xml

Processing...

Finished successfully...

----------------------
Hit Enter to continue...

myUser@computer:~$ valgrind --leak-check=yes --log-file=valgrindLog ./myProgram input.xml

Processing...
myProgram-error: Not working Polymorphism. Base class method called instead of derived class method. End-of-myProgram-error.
terminate called after throwing an instance of 'char const*'
Aborted
myUser@computer:~$ g++ -dumpversion
4.4.5
myUser@computer:~$ valgrind --version
valgrind-3.6.0.SVN-Debian
myUser@computer:~$ uname -r
2.6.35-30-generic
myUser@computer:~$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.10
DISTRIB_CODENAME=maverick
DISTRIB_DESCRIPTION="Ubuntu 10.10"

最佳答案

很可能 valgrind 正在改变您代码的行为,因为您有一个比内存泄漏更严重的错误。无错误、可移植的代码可能不会仅仅因为您使用 valgrind 运行它而抛出异常。

关于c++ - valgrind 改变二进制行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9210029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com