在设置断点的Windows上进行分配、释放和内存管理
Allocating, Deallocating and memory management on Windows with breakpoints set
我有一个c++应用程序,有一个非常奇怪的现象。
我的应用程序运行在一个大的输入上,并且我有许多缓冲区在运行时被分配和取消分配。
对于足够大的输入,我有分配错误,意味着内存不足。
但是,当我在每个分配上设置一个断点,然后从分配到分配运行时,我的应用程序不会崩溃。
我猜想这一定是和windows XP管理内存的方式有关。有没有人知道是什么原因导致了这种现象,以及如何克服它?
谢谢。
频繁的分配和释放会导致内存碎片。我的猜测是,当您使用调试器逐步执行程序时,它会给操作系统空闲时间来整理内存碎片。为了在正常运行程序时避免这个问题,您应该考虑内存/对象池(参见这里和这里)。
应用程序行为在发布和调试运行中是不同的。正如你在正常运行中所说的,它给出了内存不足,你的代码有一些问题。它可能会说没有记忆或者没有连续的记忆。
您可以使用一些静态或动态代码分析来找出问题。
IBM净化器(试用版)
相关文章:
- 正在理解智能指针,但出现错误:未分配正在释放的指针
- 调用析构函数以释放动态分配的内存
- 在函数范围内在堆栈上分配的数组在离开函数时是否总是被释放?
- 错误:malloc:对象 0x7f9edf504080 的 *** 错误:未分配正在释放的指针
- 给定一个指向堆分配内存的指针,智能指针实现如何为其找到合适的释放函数?
- 是否可以使用分配器对象来释放另一个分配器分配的内存?
- 释放动态分配的内存时是否需要执行此额外步骤
- 整数内存分配/释放
- 我是否需要在 c++ 中从本地指针中释放分配的内存?
- 未分配释放C++(C 字符串)指针
- 未分配被释放的指针(将堆栈实现为链表时)
- 在不释放所有动态分配的资源的情况下结束程序是否有风险
- Unique_ptr:在列表中放置时未分配释放的指针
- C++内存分配/释放和自由空间错误
- 带有QT的C 应用中的IIMEBRA代码给出malloc:***对象XXXXXX的错误:未分配释放的指针
- 删除引用时出现未分配释放的指针错误
- 指针的内存分配/释放
- 内存分配/释放错误(非常小的代码)
- c++堆内存分配/释放
- 内存管理——用于分配/释放I/O缓冲区的现代c++风格