使用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()か、それに該当する処理が勝手に走るということなのでしょうか?
よろしくお願いします。