デバッグ ビルドとリリース ビルドの両方を含む VS 2005 C++ プロジェクトがあります。私は次の4つのことを試みました:
- Visual Studio でデバッグ実行可能ファイルをビルドし、Visual Studio で実行します。
- (1) に組み込まれた実行可能ファイルを、コマンド ライン (Cygwin) を介して外部から実行
cd
しvstudio/debug
ます。 - Visual Studio で Release 実行可能ファイルをビルドし、Visual Studio で実行します。
- (3) に組み込まれた実行可能ファイルを、コマンド ライン (Cygwin) を介して外部から実行
cd
しvstudio/release
ます。
最初の 3 つはすべて成功します。プログラムは最後まで実行されます。
ただし、4 つ目は実行時にクラッシュします。デバッグは、原因がmalloc()
内部の operatorへの呼び出しであることを示していnew()
ます。関連するコンテキストは次のようになります。
template<typename T> class Foo {
...
static void bar() {
...
T* ptr = new T();
...
}
...
}
私が説明した 4 つのうち 3 つの症状につながる問題を誰かが思いつくことができれば、非常にありがたいです。