MFC 메모리 릭 디버깅 https://kindtis.tistory.com/518 ============ Visual Studio 2019 기준> 다른 하위 버전에서도 되는지 확인 안됨. 메모리 릭이 발생하는 cpp 파일에 아래 코드(매크로)를 추가하고 디버깅하면 메모리 릭 발생하면 메모리 릭이 발생하는 파일명과 라인 번호가 표시된다. 1 2 3 4 5 #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endi Colored by Color Scripter cs 위 매크로 없이 디버깅하면 아래 위 그림처럼 어디에서 릭이 발생하는지 알 수 없다. 노란색 부분의 숫자가 실행할때마다 고정값이면 다른 ..
다이얼로그 폰트 변경, Dialog 폰트 변경 1 2 3 4 5 6 7 8 9 10 11 12 CFont* m_pDlgFont; // 멤버변수 // 생성자 m_pDlgFont = new CFont(); m_pDlgFont->CreateFont(20, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET , OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, _T("나눔고딕")); // OnInitDialog() SendMessageToDescendants(WM_SETFONT, (WPARAM)m_pDlgFont->GetSafeHandle(), 1, TRUE, FALSE); // 소멸자..
new 형변환시 동작 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /* #ifdef _DEBUG #define new DEBUG_NEW #endif */ class A { public: A() {} }; void NewTest() { BYTE temp[sizeof(A)]; A* pA = new (temp)A; } BOOL CMFCApplication1Dlg::OnInitDialog() { CDialogEx::OnInitDialog(); NewTest(); cs new 연산자는 생성자를 실행하고, A를 temp로 형변환이 되면 pA는 힙에 할당되지 않고 temp 주소값을 갖게된다. 12행에서 A* pA = (A*)temp; 로 하면 형변환만 될뿐 생성자 호출은 당연히 안..