2013年6月1日土曜日

C++メモ

次のFactory関数を考える。 raw pointerを返しているため、だれが所有権を持つのか(だれがdeleteするのか)不明確である。以下のように書くとメモリーリークを起こす。 だれが所有権を持つのかをコメントに残せば良いかもしれない。しかし、最も有効な解決策は、所有権の所在をsignatureとして表現することである。所有権を排他的にしたいなら 共有したいなら となる。これで、こう書いてもメモリーリークはしなくなる。 std::unique_ptrstd::shared_ptrよりオーバヘッドが小さいので を採用すべきである。必要ならいつでもstd::shared_ptrに暗黙変換できる。また、ユーザ定義のスマートポインタへの変換も容易である。 参照

0 件のコメント:

コメントを投稿