1
4
很多指针类型错误,包括内存泄漏,都可以 似乎 在调试和发布模式之间切换时出现或消失。可能有以下几个原因:
|
2
3
你是怎么发现泄漏的?如果通过任务管理器,则MSVC调试实现将在
还有可能您的内存泄漏在发行版中不存在。
编辑:您也可以手动调用
|
3
3
这里还有一个方法,assert()调用带有副作用,这可能会导致更大的问题。
如果assert在释放模式下得到优化,可能会导致此行为 |
4
1
调试和释放模式使用不同的内存模型。 有些情况下,程序在一种模式下运行,而在另一种模式下崩溃。 可能导致这种情况的原因是内存损坏(尤其是堆栈损坏)。这可能是存在差异的原因。另一个原因可能是调试器并没有释放所有内容,但我对此表示怀疑。 顺便问一下,你在使用vs 2010测试版吗?这也可能是测试版的一个错误。 |
5
1
你要做的第一件事就是确定泄漏是否是由于
编译发布
|
6
0
有条件的
|
7
0
试一试 User Mode Dump Heap 随附的 Debugging Tools for Windows ,还可以看看 Application Verifier 可能不得不说。所有这些工具都非常强大,强烈推荐。
否则,除非您有泄漏代码,即
|
8
0
这可能是很多事情,但请记住,这可能是错误的肯定。在调试模式下,您可以使用至少两倍的内存。这可以使您的程序大小扩展很多次,并且通常,一旦它上升,它就不会再次下降,即使内存都在内部释放。如果“泄漏”不会随着时间的推移而变得更糟,但最终会停止,那就不是真正的泄漏。 |
payloc91 · 存储地图中的条目是否安全?它会导致内存泄漏吗? 6 年前 |
pjj · 如果GC'ed是弱可达对象,那么为什么会出现OOM错误 6 年前 |
K.R. · RxJava行为主体和使用者-这里是否存在内存泄漏? 6 年前 |
eaglefreeman · 意外的R内存管理行为 6 年前 |
areify · 如何避免此代码中的内存泄漏? 6 年前 |