所以,這裏是我的例子來說明這個問題刪除從另一個指針分配的指針,我應該再次刪除另一個指針嗎?
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