スマートポインタについて
職場で”スマートポインタ”というワードを耳にしたので、どんなものか調べる
スマートポインタとは
C++環境で利用される、メモリの自動的解放をしてくれるクラス。
従来のC++では、new、deleteを用いてメモリの取得、解放を行いますが、
これだとメモリの解放忘れによるエラー発生等を招くことがあります。
この事態を回避する為に考えられたのがスマートポインタです。
int*のような生のポインタではなくて、スマートポインタを介してメモリを扱うことで、
動的確保の利用の際に生じるメモリの解放忘れ等の危惧性を低減できるそうです。
スマートポインタの仕組み
- スマートポインタに確保したメモリを渡す
- スマートポインタは渡されたメモリの所有権を得る。このスマートポインタが破棄されるまで、このスマートポインタを介さないと利用打出来ず、解放もできない
- 所有権を持つスマートポインタがすべて破棄される。この際、メモリ解放を自動で気に行う。(ディストラクタを用いて所有権を持つメモリが不要となる瞬間を判断する)
以上の流れでメモリの解放忘れを防ぐ。