我得到了问题,我的应用程序有一个无限的增长内存泄漏,这是没有检测到。我做的很简单,就是创建一个对象,在其上运行一个方法,然后删除该对象。每次我这样做时,TaskManager中的内存使用量都会增长大约50-100MB。这在一些运行后耗尽了我的整个记忆。我通过多线程来做到这一点,但是没有静态变量,所以我的线程中的不同对象之间没有冲突。它们只使用其他对象的静态方法,不会修改任何其他内存,而不会修改参数中的内存 - 所以它是线程安全的。 我试图找出原因:内存泄漏没有检测到CRT内存泄漏检测
- 使用crtdbg.h(CRT-Memeory气密性检测),但也有只因为我的应用程序的启动而存在泄漏 - 他们会在关机时被删除他们并不那么大。
- 我一直在寻找,我继承的所有对象的虚析构函数,但它们都可以
还有什么我可以尝试找出我的应用程序泄漏?我在HEAP中找不到任何泄漏,除了可能导致STACK泄漏的析构函数问题之外,我不知道任何其他原因(通过这个,我的意思是一个对象不会销毁一个本地的std :: string对象已经在堆中分配空间)。我不知道“STACK-Leaks”是否还有其他原因,但我知道在我的方法中,内存增长最多的部分,没有HEAP分配。
让我们看看创建对象的代码以及对象或指向对象的指针 – Mark 2012-07-17 14:42:52
Obejct非常大,所以我不能发布整个代码 - 它是通过new进行分配的,并且使用delete进行了释放 - 您做了什么?想要看到确切的 - 每个新的有一个删除,每个新的[]有一个删除[] ... – DenisD 2012-07-17 14:53:14
如果你只这么做,为什么不创建堆栈上的对象 - 所以不需要新的和删除 – Mark 2012-07-17 14:56:19