我已经在C上编写了一个程序,现在我在gcc上运行它,使用valgrind(检测内存丢失的程序)。
问题是,当我在没有valgrind的情况下运行它时,它比使用valgrind更快更多。我已经尝试了几个输入,结果是当输入很高时,甚至不能以valgrind结束,但没有它需要几秒钟。
我的程序中有很多对malloc的调用,它可以相关吗?
不幸的是我无法发布我的代码,因为它是作业的一部分,我必须保持它离散。这个赋值可能会用valgrind检查,所以我必须解决它。
一般答案和可能的解决方案可能会有很大帮助。
由于
答案 0 :(得分:2)
这是完全正常的。 Valgrind模拟你的代码,保持跟踪分配,释放,内存访问等等。
来自The Valgrind Quick Start Guide:
Your program will run much slower (eg. 20 to 30 times) than normal, and use a lot more memory.
答案 1 :(得分:0)
Valgrind是拦截对malloc的调用以及自由收集其统计数据的其他事情。这种拦截正在减慢通话速度。没有什么可以反对的。