我有一个使用ffmpeg进行解码的简单应用程序。
通常它工作得很好。但是,当我尝试播放某个文件时,它开始吃掉我的记忆。即使我释放解码器使用的所有资源,内存也不会被释放。
我尝试过运行内存泄漏检测器(英特尔并行检查器),但它没有检测到泄漏,因为内存很可能在关机期间释放。
我的问题是如何查看运行时分配的内存和内容?
编辑:添加了Windows标记。
答案 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。
如果没有发现任何泄漏,我建议让你的程序运行几个小时,并检查它可以使用多少内存的上限;它可能不是泄漏。