[英]Destructor and delete
我有一個C ++類MyClass
。 它包含一個構造函數,一個析構函數和一個int private: int *MyPtr;
指針private: int *MyPtr;
。
我在某個地方動態分配了MyClass
對象:
MyClass *my = new MyClass(); //...
然后我叫delete my;
MyClass
是否應該有一個使用諸如delete MyPtr
類的析構函數? 還是我致電delete my
MyPtr銷毀delete my
?
如果您分配了MyPtr insid MyClass構造函數,則有責任刪除它。 否則,如果刪除未分配的內存,則會導致未定義的行為。
慣用的方法是在類內部使用智能指針,如果您需要動態分配內存並將其刪除,則智能指針將為您分配內存。
概率值得一讀: 三個規則
Or is that MyPtr destroyed when I call delete my?
不,當您打電話delete my;
這將調用MyClass
的析構函數,除非您在析構函數中明確刪除MyPtr,否則將發生內存泄漏。
Should MyClass have a destructor which uses something like delete MyPtr?
始終刪除析構函數中動態分配的內存,這就是析構函數的用途。
你打電話時
delete my
您不會取消分配該類的數據(除非您在析構函數中指定),否則將導致內存泄漏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.