我的程序中存在内存碎片问题,一段时间后无法分配非常大的内存块.我已经阅读了这个论坛上的相关帖子 - 主要是这个.我还有一些问题.
我一直在使用内存空间分析器来获取内存的图片.我写了一个包含cin >> var的1行程序; 并拍下了记忆的照片:
alt text http://img22.imageshack.us/img22/6808/memoryk.gif 顶部弧线的位置 - 绿色表示空白,黄色分配,红色提交.我的问题是右侧分配的内存是什么?它是主线程的堆栈吗?这个内存不会被释放,它会分裂我需要的连续内存.在这个简单的1行程序中,拆分并不是那么糟糕.我的实际程序在地址空间的中间分配了更多的东西,我不知道它来自哪里.我还没分配那个记忆.
我该如何解决这个问题?我想改用像nedmalloc或dlmalloc这样的东西.但是,这只适用于我自己明确分配的对象,而图片中显示的分割不会消失?或者有没有办法用另一个内存管理器替换CRT分配?
说到对象,是否有适用于c ++的nedmalloc包装器,所以我可以使用new和delete来分配对象?
谢谢.