每个应用程序都有自己独立的2GB内存空间。如果我在程序中分配了大量的内存,但是没有释放,我不知道在进程关闭的时候,Windows是否会释放掉那2GB的内存空间,我想应该要释放掉的吧,要不然或多或少都会影响系统性能。但是为什么总是听到别人谈论内存泄漏呢?

解决方案 »

  1.   

    内存泄露,我到现在都不知道内存泄露的含义是什么,在程序中又如何能做到内存泄露!我前一段时间看D书里面的开发组件,说到开发组件的过程中有可能发生栈或堆溢出,导致内存,我不知道这应该叫什么?比如我开发的组件里面有一个TPanel类型的属性,所以在申明这个属性的时候应该使用写属性方法来写属性内容。如果直接使用对应私有数据来写属性,就可能导致原来私有数据引用的对象丢失,这是一方面!另外一方面,我在属性的写方法中绝对不可以使用给属性本身赋值的语句,因为这样会导致死循环,最后导致存放类对象的堆发生溢出!这里的两个因素我不知道是不是属于内存泄露!关注你的帖子!
      

  2.   

    内存泄漏就是procedure TForm1.ButtonClick(Sender: TObject);
    var
      obj: TButton;
    begin 
      obj := TButton.Create(nil);
    end;创建完没有释放就是内存泄漏还有一些API
    CreateFont后
    没有DeleteObject如果你的程序一直在运行,内存不断的消耗,而没有被释放,
    那就会影响整个系统
      

  3.   

    TButton.Create(Application);
    是否是由Application来释放TButton呢?以前好象听哪个说过“谁创建就有谁释放”
      

  4.   

    To Pazee
      
      按照你的说法,即使我在一个按钮的事件中加上Obj:=TObject.Create(Nil);这样的句子,而且可能我在应用程序的运行过程中进行了很多次这样的过程,也就是建立了多个Obj,你的意思是无论建立了多少个重复的对象,在程序结束的时候SYSTEM都会释放掉这些资源了?
      

  5.   

    to FrameSniper(框架狙击手) 
    当然能,你重点理解这一句,所有的资源的申请和释放都是通过操作系统的。操作系统会知道你申请了哪些。