C++:auto_ptr に関する注意
(1999/09/30 [木])
C++ では、#include <memory> として auto_ptr を使用することができます。auto_ptr はポインタを保持することができ、宣言されたブロックを抜けると自動的に delete 演算子を使ってポインタを開放します。例えば、std::auto_ptr<int> p(new int); とすると int 型へのポインタを新たに確保して、それが auto_ptr に保存されます。変数 p がブロックスコープを抜けると自動的に delete p; が実行されるます。このように自動的に delete されるので、delete のし忘れがなくなり、結果として堅固なプログラムを作ることができます。
しかし、配列を new した時には(例えば int *p = new int[100])、delete は delete [ ] p としなくてはいけません。auto_ptr は必ず delete を呼び出すので、配列に対しては使用することができません。間違って、配列を auto_ptr に入れないようにしましょう。
しかし、配列を new した時には(例えば int *p = new int[100])、delete は delete [ ] p としなくてはいけません。auto_ptr は必ず delete を呼び出すので、配列に対しては使用することができません。間違って、配列を auto_ptr に入れないようにしましょう。
by seclan