1

Win32 構成 (Win7-SP1 64 ビット / VS2010 / 4G RAM) でビルドすると、実行時にMicrosoft C++ 例外: std::bad_alloc at memory location...が発生したため、私が直面している問題は少し混乱しています。

私のアプリはライブラリを使用し、ユーザーに入力を求めますが、私のコードのcinコマンドは、コードが cin ステートメントに達すると上記の実行時例外を発生させます。したがって、私が見つけたものを確認するために、コードのみに従ってテストプロジェクトを作成し、cinコマンドが同じ例外を発生させることを確認します。

int _tmain(int argc, _TCHAR* argv[])
{
 cout<<"Please enter ?\n";
 string input = "test";

 cin >> input; //This code causing runtime exception

 return 0;
}

Google で検索してから、x64 でビルドするようにコードを変更すると、この例外を回避できるので、元のコードを 64 ビットに変更し、cin コマンドで正常に実行できるようにします。

しかし、構成を win32 に戻してビルドすると、サンプル アプリと元のアプリの両方で上記の例外が発生しなくなりました。

だから私は知りたいです: 誰かが私が経験していることと同じ顔をしていたら?

  • win32 で初めてビルドしたときの何が問題なのですか?

  • また、コードが現在 win32 で正常に実行されている場合 (x64 から戻した後)、それは本当に正常に動作していますか、それとも当分の間動作させるために何かを混ぜただけですか?

タナクス

4

1 に答える 1

0

_tmainによる UTF16 の使用に関連している可能性があります

std::wstringまたは通常の (Microsoft 以外の) メインを使用してみましたか?

于 2013-07-17T17:34:32.530 に答える