先声明一下,以下所有操作均是在可用内存足够大的情况下进行的,各步骤之间流水操作,之间无其他操作进行。操作系统为XP,开发语言为VC++6.0过程:
1。申请一块内存空间,约为500M左右,而后释放;
2。零零碎碎的连续开辟了许多小空间,大小总共加起来要大于步骤一里申请的内存大小(是用结构嵌套加循环的方式不断申请空间,不知和这个有没有关系);
3。将步骤二申请的空间全部释放,再次申请步骤一中同等大小的内存,失败,
提示“内存不足”(Microsoft C++ Exception:0xE06D7363).会不会使我再次申请内存空间时,系统已无连续的内存空间可用阿?有什么办法解决么?谢谢啦

解决方案 »

  1.   

    大量频繁分配释放小块内存,会产生内存碎块,系统没有整理的情况下申请大块内存是可能失败的。一般这种情况可以自己接手内存管理,比如分配RAW Memory,然后自己在这块大内存中分配小块内存,一是可以保证分配成功,一是可以避免内存碎块。
      

  2.   

    自己管理内存吧。进程可用的内存虚拟空间理论上是4G(这个和你的物理内存还剩多少没有关系),你频繁地申请释放操作后可能在这4G空间中已经没有连续的500M可供分配了。