计算机的内存是3G,在VC6.0中调试运行程序,每当动态分配的内存
总共约1.5G左右,就再也分配不了了,这是怎么回事啊??
是不是内存碎片太多了啊??
注:前面每次动态分配都超过100M,没有发现内存泄露。

解决方案 »

  1.   

    程序分配的内存通常是虚拟内存,与物理内存大小基本没有关系。虚拟地址的前2GB是用户地址空间,后2GB是系统地址空间,应用程序的代码和数据都在用户地址空间中分配,在分配内存时,如果在该地址空间中找不到足够大小的未用地址,则分配失败。
      

  2.   

    并且VirtualAlloc函数分配的地址要求必须是连续的
      

  3.   

    可以通过3G开关将程序可用内存从2G改成3G,资源管理器里的进程列表中所显示是程序用的虚拟内存
      

  4.   

    内存不够,只能放硬盘上,用文件来储存,例如CreateFile、ReadFile、WriteFile等。