在设置断点的Windows上进行分配、释放和内存管理

Allocating, Deallocating and memory management on Windows with breakpoints set

本文关键字:分配 释放 管理 内存 断点 设置 Windows      更新时间:2023-10-16

我有一个c++应用程序,有一个非常奇怪的现象。

我的应用程序运行在一个大的输入上,并且我有许多缓冲区在运行时被分配和取消分配。

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

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

我猜想这一定是和windows XP管理内存的方式有关。有没有人知道是什么原因导致了这种现象,以及如何克服它?

谢谢。

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

应用程序行为在发布和调试运行中是不同的。正如你在正常运行中所说的,它给出了内存不足,你的代码有一些问题。它可能会说没有记忆或者没有连续的记忆。

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