WIN32アプリケーションプログラムでコンソール使うとランタイムエラーが出る
使用OSはWindows10、症状はタイトルの通りです。
WIN32アプリケーションで、デバッグ目的でコンソールの表示、文字出力の処理を作りました。
が、ランタイムエラーがデバッグ実行した時のみ出ます。ランタイムエラーが出るタイミングはWinMain()を抜けたあとのext_common.inlの273行目、
exit(main_result);
です。ランタイムエラーの内容は、
0xC0000008: An invalid handle was specified
となっています。以下ソースコードです。
#include<io.h>
#include<iostream>
#include<fcntl.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
int hConsole;
FILE* pFile;
if( AllocConsole() )
{
hConsole = _open_osfhandle( (long)GetStdHandle(STD_OUTPUT_HANDLE), _O_WTEXT);
pFile = _fdopen(hConsole, "w");
freopen_s( &pFile, "CONOUT$", "w", stdout);
}
std::cout << "aaa" << std::endl;
FreeConsole();
return 0;
}
最後のFreeConsole()を呼ばなければエラーは出ません。
じゃあFreeConsole()呼ばなければいいという話なのですが、それは片付けをしていないので、それもどうなのかなという感じです。
デバッグ実行時にしか出ないので、デバッグ実行時はFreeConsole()か、それに該当する処理が勝手に走るということなのでしょうか?
よろしくお願いします。