ほぼ初期状態のC++/CLIコンソールでテストすると普通に出力ウィンドウに表示されましたよ。
#include "pch.h"
#include <iostream>
using namespace System;
public ref class TestClass1
{
public:
TestClass1() :pv(NULL)
{
*(pv = (int*)malloc(sizeof(int))) = 1234;
}
~TestClass1()
{
free(pv);
}
public:
int* pv;
};
void Test1()
{
TestClass1^ c1 = gcnew TestClass1();
std::wcout << *c1->pv << std::endl;
}
void Test2()
{
_CrtDumpMemoryLeaks();
__debugbreak();
}
int main(array<System::String^>^ args)
{
//出力ウィンドウに表示(デフォルト)
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_DEBUG);
//ダイアログに表示
//_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_WNDW);
//ファイルに出力
//HANDLE hfile= CreateFile(L"Test.dump", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
//if (hfile)
//{
// _CrtSetReportFile(_CRT_WARN, hfile);
// _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
//}
Test1();
Test2();
//if (hfile)
//{
// CloseHandle(hfile);
//}
}
デバッグバージョンというのは、ランタイムライブラリをデバッグ用のバージョンにリンクしているという意味です。
提示されている_CrtDumpMemoryLeaksのページ内のリンクの_DEBUGに説明があります。
「メニュー->プロジェクト->プロパティ->構成プロパティ->C/C++->コード生成->ランタイムライブラリ」が マルチスレッドデバッグDLL(/MD) または マルチスレッドデバッグDLL(/MDd)になっていると、デバッグ用のランタイムライブラリにリンクされます。 そうでない場合はリリース用のライブラリにリンクされて、デバッグ用関数は実行されなくなります。 つまり、デバッグウィンドウに表示されない場合にはリリースの設定になっているか、CrtSetReportModeでほかの方法に設定されている可能性があります。