new是在heap里,有限制的是stackmsvcrt里的new最终还是调用HeapAlloc,是一个叫_Crt_Heap的heap(名字有点记不清了)当然不只一MB

解决方案 »

  1.   

    静态定义变量是栈分配,而使用new是动态堆分配
      

  2.   

    对啊new就是在堆上分配的,所以得用delete 释放
      

  3.   

    程序Stack和Heap公用一段空间,只不过一个上(从顶端)一个下.在DOS下的,是有限的,但可以通过改变编译模式来解决,如TC中的Large or Huge.Windows下内存由系统管理,空间不够时系统能分配新的空间,甚至虚拟内存.
      

  4.   

    在我的程序里面老是出现内存增大的情况。多大上百兆知道系统资源被消耗完
    debug的output里输出说我访问了错误的代码段。而编译时没有出错。我猜想会不会是new的缘故,因为程序里使用了很多的new而栈的初始大小怎么扩大?
      

  5.   

    cyber_girl(还没想好) ;HeapAlloc里的堆句柄有可能是系统缺省堆的句柄,那个堆只有1m的,你能确定new不是在这个缺省堆里分配内存的吗?
      

  6.   

    to winay_dd(winay) 
    那个heap是由HeapCreate的,大小是0,就是说在系统有内存可用的时候总可以分配。heap是可以没有大小限制的,stack有
      

  7.   

    我用new分几个几兆的内存,分配成功,可是读写都不行(不是出错,是写不进东西,也读不出东西)。最好没办法,只好用api GlobalAlloc,结果就好了