|
|
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
这可能是很多事情,但请记住,这可能是错误的肯定。在调试模式下,您可以使用至少两倍的内存。这可以使您的程序大小扩展很多次,并且通常,一旦它上升,它就不会再次下降,即使内存都在内部释放。如果“泄漏”不会随着时间的推移而变得更糟,但最终会停止,那就不是真正的泄漏。 |
|
|
George S. · 是否存在基于元组的控制流语句内部表示? 8 年前 |
|
FlatAssembler · 在x86程序集中计算exp(x) 8 年前 |
|
|
cib · 即时编译和动态编译有什么区别? 8 年前 |
|
|
Artemis · 寄存器与指令之间的差异 8 年前 |
|
|
Sam · 了解go工具编译和链接命令 8 年前 |