所以,这里是我的例子来说明这个问题删除从另一个指针分配的指针,我应该再次删除另一个指针吗?
void * p1;
int * p2, * p3;
p2 = new int;
p1 = p2;
p3 = (int *) p1;
释放内存,有以下3条线路相互等同?
delete p2;
delete p3;
delete (int *) p1;
我使用这样的原因是,我想传递函数之间的指针不知道它的类型,例如我定义了一个空隙的指针,并通过调用其它函数如下地改变其值:
void * p1;
func1(p1); //in this function, p2 = new int and p1 is assigned as p1 = p2;
func2(p1); //in this function, p1 is assigned to another pointer: int * p3 = (int *)p1;
然后,我打电话FUNC3释放内存
func3(p1); //delete int * p1
调用FUNC3后,我一定要了应对FUNC1 P2?
谢谢!
一个'删除'预'新'。一个'删除[]'预'新[]'。在这种情况下,您应该使用智能指针。 – andre