2011-12-20 13 views
1

私はdelete ptrと言うと何が起こるかに集中したいと思います。私はクラスのデストラクタが呼び出され、割り当てられたスペースの量が再利用されることを知っています。メモリを "削除"する方法はありますか?

私たちのオブジェクトに他のポインタなどがある場合、そのオブジェクトも再利用されるでしょうか、そうするためにはコンストラクタの定義に従いますか?

答えて

2

削除するオブジェクトに他のオブジェクトやメモリブロックのポインタがある場合は、オブジェクトが削除されても自動的に削除されません。あなたはそれを世話しなければなりません。それを行う適切な場所は、オブジェクトのクラスのデストラクタである可能性が最も高いです。

すべてのメモリを適切に割り当て解除しないと、プログラムにメモリリークが発生します。

3

デストラクタは、オブジェクトが所有するすべてのリソースをクリアする責任があります。それには、それを必要とするポインタにdeleteを呼び出すことが含まれます。デストラクタがこれをしないと、メモリリークが発生します。

オブジェクトに自動保存期間のメンバーがある場合、それらのメンバーのデストラクタが自動的に呼び出されます。これはRAIIの基礎です。

1

デストラクタ(コンストラクタではありません)の定義に従います。

関連する問題