如果我在一个程序里频繁地调用New分配内存,用Delete释放内存,是否会造成占用系统大量的内存?结果就是最后造成系统崩溃。

解决方案 »

  1.   

    因该是不会的。但如果这些new和delete是针对同种对象的,可以考虑重载new 和 delete 是之更有效率。我记得在那一本C++的书里看到过这种例子。
    《Effective C++》?
      

  2.   

    很有可能啊!频繁地调用New分配内存,会造成内存中有大量的内存碎片。
      

  3.   

    :)你可以去试试
    我想答案是肯定的
    不过要够狠才行(狂new那些占内存的对象N次)
      

  4.   

    new 有 delete 应该没有问题
      

  5.   

    我想问题不是太大,只要你的确保证new以后有配套的delete就行了,现在的win32系统允许程序最大寻址4gb,只要你不是恶意地占用内存,一般不会出现什么问题.关于内存间隙问题,我不是很清楚windows是如何做的,不过我曾有程序每秒new4-10K内存,运行了5天,也没有出过问题,我的物理内存是256M.
      

  6.   

    不会崩溃的,我曾经做了一个循环测试只new步delete,系统也没有崩溃,只是到后面自己的程序当掉了,系统一点儿事都没有.我用的是xp,不知道这windows当中又什么保护机制.
      

  7.   

    XP用的是NT机制,所以即使是用完了所有的内存(表面上看来如此),实际上NT只是给你的APPLICATION创建了一个子系统用以完成你的工作,所以当你的子系统崩溃时,NT系统并不崩溃,而是将你所使用的子系统清除掉而已. 但在Win9X系列里就要当心了.
      

  8.   

    如果你用Win98,这种情况会发生,可能会分配不了内存,系统崩溃应该还不至于,在Win2000或是NT你想这样,别做梦了.
      

  9.   

    如果大量分配/释放同样大小的内存块,有可能造成进程全局堆很快碎片化。最后导致无法分配必要的大块内存。
    最好自己创建一个局域堆,然后分配/释放同样大小的内存块都在这个堆中进行。
    参考《Windows核心编程》
      

  10.   

    如果你把所有用new分配的而又没有用内存及时delete掉,系统应该不会崩溃
    的。
      

  11.   

    new<---->delete
    malloc<--->free
      

  12.   

    会产生内存碎片,多new几次后,以后new的速度会变慢地
      

  13.   

    关于内存碎片,你完全不用担心的。windows操作系统有完善的内存管理机制,能利用“紧凑”等方法将内存碎片拼凑起来。
      

  14.   

    如果用vc,不用担心。
    vc将你分配的小内存在另外的堆分配,与大内存分开,所以不论大小内存,都不至于会很容易造成碎片。
      

  15.   

    when you use "new" the memory normally will be allocated in heap rather than stack so it is your program's responsibility to call "delete" to free the memory allocated in heap. Otherwise memory leakage will occurs, and probably will crash your system. Because the OS will automatically free the memory which is in stack but not the heap. Mind that in VC++ if you use the "Debug" version even you forget to call the "delete" after a calling to "new" the memory VC++ will take care of that, but not in "Release" version. Another point might worth of reminding is that: dynamically allocates mulit-dimension array needs the "delete" to be matched exactly.
      

  16.   

    应该没问题的
    我做课程设计时也经常用NEW和DELETE 运行时没出现问题啊
    如果只用NEW没有DELETE就回造成内存浪费而就会出现死机
    在《C++》教程就有解释!!!