如题?

解决方案 »

  1.   

    假如是你自己定义的类,绝对需要
    不是 mfc 中的
      

  2.   

    if p already alloced, then need delete it
      

  3.   

    必须要delete掉,否则先前的p指向的地址将不能被回收,导致内存泄漏。
      

  4.   

    怎么删啊?delete *p  吗?
      

  5.   

    Class A; A* p = new A(p1,p2); 在进行  p = new A(p3,p4);之前,前面的new 需不需对应一个delete??? 
    =====================
    实际使用可以这样;{
    ...
      A *p;
      A a1(p1,p2);
      p=&a1;
      // 此处使用p
      A a2(p3,p4);
      p=&a2;
      // 此处使用p
    ...
    }
    没有必要反复的new & delete,
    new delete 仅在频繁操作内存情况下使用。
      

  6.   

    用delete p即可删除了。
    简单问题可以接分了楼主
      

  7.   

    再问一下: happyparrot与 zjz800800
     delete p;
      p = new A(p3,p4);
    这样写吗?因为指针p还要使用
      

  8.   

    不要去想那么多了,有new,必有delete。就像花括号一样要成对出现!!!不过delete的位置是在你不再需要使用new变量时写,早些了就玩完了!!!理想的方法是构造函数里用new,析构函数里用delete。
    上面的问题其实第二个new可以不用,直接用构造函数就可以了,因为内存在第一个new时就已经分配了!
      

  9.   

    完善的方法是:
    if(p != NULL)
    {
        delete p;
        p = NULL;
    }
    p = new A(p3,p4);
    if(p != NULL)
    {
        //正确分配空间后的处理
    }
      

  10.   

    我想是要的,当p=new A(p3,p4)时,原来new 的A(p1,p2);不能再访问了(无指针指向,会leak的)。
      

  11.   

    http://www.microsoft.com/china/MSDN/library/archives/others/Visualc/iccmipb.asp
      

  12.   

    这有什么可怀疑的
    C++不象java有垃圾回收管理,有new必须要delete在C++/CLI中的gcnew出来的,可以不用但是养成好的习惯会大大减少事故发生率,最好还是成对出现
      

  13.   

    有new,必有delete。
        方法是构造函数里用new,析构函数里用delete。
        上面的问题其实第二个new可以不用,直接用构造函数就可以了,因为内存在第一个new时就已经分配了!
      

  14.   

    肯定要delete的,否则将会造成内存泄露,养成习惯:用了new就一定要用delete
    将其释放。
      

  15.   

    绝对需要  否则就会发生内存泄漏
    原则上讲  new 和 delete 是成对出现的
      

  16.   

    是的,需要,因为Class A; A* p = new A(p1,p2); 后,p指向了一块内存资源,操作这块内存资源的唯一途径是通过这个p,如果此时写这么一条语句,p = new A(p3,p4);原先p指向的那块内存就访问不到了,从而不能将它释放,所以应该使用delete p;这条语句。