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 仅在频繁操作内存情况下使用。
用delete p即可删除了。 简单问题可以接分了楼主
再问一下: happyparrot与 zjz800800 delete p; p = new A(p3,p4); 这样写吗?因为指针p还要使用
不是 mfc 中的
=====================
实际使用可以这样;{
...
A *p;
A a1(p1,p2);
p=&a1;
// 此处使用p
A a2(p3,p4);
p=&a2;
// 此处使用p
...
}
没有必要反复的new & delete,
new delete 仅在频繁操作内存情况下使用。
简单问题可以接分了楼主
delete p;
p = new A(p3,p4);
这样写吗?因为指针p还要使用
上面的问题其实第二个new可以不用,直接用构造函数就可以了,因为内存在第一个new时就已经分配了!
if(p != NULL)
{
delete p;
p = NULL;
}
p = new A(p3,p4);
if(p != NULL)
{
//正确分配空间后的处理
}
C++不象java有垃圾回收管理,有new必须要delete在C++/CLI中的gcnew出来的,可以不用但是养成好的习惯会大大减少事故发生率,最好还是成对出现
方法是构造函数里用new,析构函数里用delete。
上面的问题其实第二个new可以不用,直接用构造函数就可以了,因为内存在第一个new时就已经分配了!
将其释放。
原则上讲 new 和 delete 是成对出现的