ここにシナリオがあります:
- libA.soとlibB.soは両方とも同じSTLに静的にリンクします。
- libA.soには、std :: stringを返すパブリックAPIがあります。
- libB.soはこの関数を呼び出し、文字列のコピーを受け取ります。
- 文字列のlibB.soのコピーがスコープ外になると、文字列のデストラクタが呼び出されます。
- コピーされた文字列を解放しようとするアプリケーションセグメントフォールト。
このように静的にリンクすることは悪いことを他の場所で読んだことがありますが、なぜそれが悪いのかをもっと理解したいと思います。上記のシーケンスがクラッシュする理由を誰かが説明できますか?