でハングアップ:静的ローカル変数は、私はこれらの線に沿ってレガシーコードを持っているVS2015でコンパイルされたコード
inline A::A() {
static boost::shared_ptr<Data> data(new Data(""));
data_ = data;
}
Data
は、いくつかのクラスであり、data_
はclass A
の非静的メンバ変数です。興味深いのは、このコードはVisual Studio 2013でビルドしたときに正常に動作しますが、Visual Studio 2015でビルドされている場合は、コードがハングしています(静的な場所DLLロード時に変数data
が初期化されます)。コードは、DLLの読み込み時に呼び出される 理由は、class A
の静的オブジェクトがあるということです例えば、
class B
{
static A a_;
}
私はVS2015は、例えば、インラインを尊重しないことによって、異なったコードを構築することができることを実現しますヒントなど。しかし、それが掛かる理由は何でしょうか?メモリ破損ですか? このコードを動作させようとするのではなく、このコードによって引き起こされた潜在的な問題を理解しようとしています。
[mcve]してください。 – user4581301
これは実行可能かどうかわかりません(最小、完全、および検証可能な例) - このコードは巨大なソリューションの一部です。私は、このコードが達成しようとしている問題を必ずしも解決するとは限らない、理論上の問題を理解しています。整合性を保って再現できない可能性があります。 – PeterD
この関数が呼び出されるコンテキストを確認する必要があります。また、 'Data'のコンストラクタが実際に何をしているのかを知るのに役立ちます。投稿されたコードには、問題が何であるかの手がかりを与えるものは何もありません。 –