[技術講座]
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における問題の修正
© 2009 OGIS-RI Co., Ltd. |
|