簡體   English   中英

析構和刪除

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM