我的记忆在哪里?

时间:2011-05-15 09:45:43

标签: c++ windows memory-leaks

我有一个使用ffmpeg进行解码的简单应用程序。

通常它工作得很好。但是,当我尝试播放某个文件时,它开始吃掉我的记忆。即使我释放解码器使用的所有资源,内存也不会被释放。

我尝试过运行内存泄漏检测器(英特尔并行检查器),但它没有检测到泄漏,因为内存很可能在关机期间释放。

我的问题是如何查看运行时分配的内存和内容?

编辑:添加了Windows标记。

2 个答案:

答案 0 :(得分:3)

尝试使用带有选项--leak-check = full的valgrind来查看是否有任何内存泄漏。 http://valgrind.org/

编辑:现在我看到目标平台是windows,这个问题可能会引起关注:Is there a good Valgrind substitute for Windows?

答案 1 :(得分:1)

如果可以使用调试CRT运行应用程序,请使用CRT内存泄漏报告功能。

调试CRT跟踪您的分配,并可以告诉您应用程序退出时内存泄漏的位置。要记住的一件事是,为了使用这种方法,您必须确保在退出main函数之前清除所有资源,否则它们将被报告为泄漏。

详情http://msdn.microsoft.com/en-us/library/x98tx3cf.aspx

如果没有发现任何泄漏,我建议让你的程序运行几个小时,并检查它可以使用多少内存的上限;它可能不是泄漏。

相关问题