在设置断点的Windows上分配,取消分配和内存管理

时间:2011-11-30 10:15:54

标签: c++ windows memory-management

我有一个非常奇怪的C ++应用程序。

我正在大型输入上运行我的应用程序,并且我有许多在运行时分配和解除分配的缓冲区。

对于足够大的输入,我有分配错误,意味着内存不足。

但是,当我在每个分配上放置一个断点,然后从分配到分配运行时,我的应用程序不会崩溃。

我的假设是它必须与Windows XP管理内存的方式有关。 是否有人知道是什么原因导致这种现象,以及如何过来呢?

感谢。

2 个答案:

答案 0 :(得分:2)

频繁分配和释放可能导致内存碎片。我的猜测是,当你使用调试器逐步执行程序时,它会给操作系统空闲时间来对内存进行碎片整理。为了避免在正常运行程序时出现问题,您应该考虑内存/对象池(请参阅herehere)。

答案 1 :(得分:0)

Release和Debug运行中的应用程序行为不同。正如你在正常运行中说的那样,它会在内存不足之处导致代码出现问题。可能会说没有记忆或没有连续的记忆。

您可以使用一些静态或动态代码分析来找出问题 IBM Purifier(试用版)