ObectSquare

[技術講座]


C++におけるスマートポインタとシリアライズ
~boostライブラリにパッチが採用されるまで~

株式会社 オージス総研
組み込みソリューション部
近藤 貴俊

 本記事は、筆者がプログラミング言語C++を用いてソフトを開発している際に遭遇した問題と、その解決までをまとめたものです。

 現在のC++プログラミングでは、多くの場面でBoostライブラリを利用します。今回筆者は、動的なオブジェクトのライフタイムを自動的に管理するためにboost::shared_ptrおよびboost::weak_ptrを、オブジェクトを保存・復元するために、boost::serializationのライブラリを利用しました。そこで予想外の問題に遭遇し、Boostにバグ報告し、解析を行い、最終的にパッチを送り、それが採用され、本線にマージされることになりました。その過程で、普段利用しているだけでは意識することのない、Boostライブラリの実装の工夫を垣間見ることになりました。そのあたりの情報も交えながら、いったいどんな問題にぶつかり、どうやって解決したのかを紹介したいと思います。

1.boost::weak_ptrを利用するケース
2.boost::serializationを利用するケース
3.boost1.39.0における問題と、その解析
4.boost1.39.0における問題の修正
コラム1. shared_ptrとポリモーフィズム
コラム2. enable_shared_from_this

© 2009 OGIS-RI Co., Ltd.
HOME HOME TOP オブジェクトの広場 TOP