假若程序一开始分配了一块内存空间,并将这块空间对应的地址保存在一个指针里面,当这个指针被消灭以后,这块空间是否也会被释放呢?换句话说,是否可能存在某块分配过的内存,但却没有任何指针可以对应他的情况呢?这种情况在vc中具体又是如何的呢

解决方案 »

  1.   

    c/c++沒有垃圾回收機制。在.net的托管(manage)下有類似java的回收。具體參考msdn的vc++ .net部分
      

  2.   

    void tt()
    {
    int *cc=new int;
    };
    int _tmain(int argc, _TCHAR* argv[])
    {
    tt();
    return 0;
    }例如这样的一块区域。。会泄露么
      

  3.   

    肯定泄露了,C++对于你new的不会自动delete的,要你自己手动的
      

  4.   

    new()的作用是从空闲堆链表中取出一块合适的内存来进行分配,而delete()则是将new()分配的内存块重新放回空闲堆链表,以备以后使用.
    C++对new()不会自动delete(),这样没有delete()的这块内存就不会被再放回空闲堆链表,这样这块内存虽然没有使用了但也不会再参与分配了,于是这块内存就泄露掉了(直到进程结束).