C++에서 코드를 작성하다 보면, 동적 할당 된 메모리 관리에 대해 잘하고 있는지 의문이 들 때가 있다.
그럴 때에 사용하면 유용한 Windows 내장 함수를 알아보자.
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
// 메모리 누수(Lead) 체크
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
//_crtBreakAlloc();
// Memory Leak 유발 코드 한 줄
int* iTestValue = new int();
...
}
Windows App의 main 함수의 최상단에 _CrtSetDbgFlag 함수를 작성해주면 된다.
int* iTestValue = new int();
이후 일부러 Memory Leak이 발생하도록, 위와 같이 코드를 작성해주었다.
위와 같이 Memory Leak에 대한 정보가 출력되는 모습이다.
(스마트 포인터를 안쓰는 경우에도 굉장히 유용한 듯 싶다.)
어디서 Memory Leak이 발생했는지 찾고 싶다면, 아래 함수를 사용하면 된다.
_CrtSetBreakAlloc(215);
어디서 Memory Leak이 발생했는지 직접 중단점을 걸어줘서 찾기 편하게 해준다.
(호출 스택을 통해서 찾을 수 있다.)
이상으로 포스팅을 마칩니다.
'(2022) 공부 (Study) > 게임 개발 (Development)' 카테고리의 다른 글
Win32API - 출력 디렉터리 및 리소스 경로 관리 (0) | 2022.08.11 |
---|---|
[Win32API] 임시 (0) | 2022.04.20 |
[Win32API] GetAsyncKeyState() 와 키 입력 받기 (3) (0) | 2022.04.20 |
[C++] 정적(static) 키워드의 개념과 활용 (0) | 2022.04.20 |
[Win32API] Bitmap에 대한 정리 (2) - bitColor 수정 및 출력 (0) | 2022.04.19 |