본문 바로가기
C++/공부

[C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(3) Key 입력 정의 가져오기, 메모리 누수 검사 기능 추가

by 왹져박사 2025. 1. 17.

2025.01.17 - [C++/공부] - [C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(2) PreCompiledHeader, DLL 헤더파일 추가와 매크로

 

[C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(2) PreCompiledHeader, DLL 헤더파일 추가와 매크로

1. PreCompiledHeader 프로젝트의 컴파일 시간을 단축하기 위하여 미리 컴파일된 헤더파일을 사용한다. 수정이 거의 없어 안정적이며 사용 빈도가 높은 헤더파일을 포함시킨다.  https://learn.microsoft.

narmhye.tistory.com

이어서!

 

 

 

1. Key 입력 정의 가져오기

 

Window에서는 키보드 입력을 가상 키코드로 받아 그 값에 따라 키 입력을 처리하거나 무시한다. 

 

우리가 필요한 키코드는 winuser.h라는 가상 키 코드 헤더파일에서 볼 수 있었다. 

 

 

각 키코드 값은 16진수 값을 가지고 있다. 

기호 상수 이름은 VK_로 시작한다. (virtual keyboard)

꽤 직관적으로 이루어져 있어, 대부분은 유추할 수 있었고, msdn을 보며 원하는 키코드를 찾아봐도 좋다. (하단 링크)

 

 

우선은 필요한 부분이 포함된 부분까지만 복사해서 Core.h에 붙여 넣었다. 

0x01에서 0x2F까지 포함하였다. 

 

 

https://learn.microsoft.com/ko-kr/windows/win32/inputdev/about-keyboard-input

 

키보드 입력 개요 - Win32 apps

이 항목에서는 키보드 입력에 대해 설명합니다.

learn.microsoft.com

 

https://learn.microsoft.com/ko-kr/windows/win32/inputdev/virtual-key-codes

 

가상 키 코드(Winuser.h) - Win32 apps

다음 표에서는 시스템에서 사용하는 가상 키 코드에 해당하는 기호 상수 이름, 16진수 값 및 마우스 또는 키보드를 보여 줍니다. 코드는 숫자 순서로 나열됩니다.

learn.microsoft.com

 

 

 

 

 

2. 메모리 누수 검사 기능 추가

C++은 동적 메모리 할당과 해제를 직접 해야한다. 그렇기 때문에, 해제하지 않은 경우들이 생기기도 한다. 

이에 따른 Memory Leak을 해결하기 위하여 CRT 라이브러리로 메모리 누수를 찾는다. 

 

이를 엔진 라이브러리 함수로 구현하여 재사용하자. 

msdn에서 정말 친절하게 설명해준다. 

 

우선, 다음 명령문을 포함시킨다. 

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

 

 

헤더파일을 내보내기 때문에, inline 함수로 구현하였다. 

_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF )를 통하여

메모리 누수 보고서를 출력 창에 디버그를 출력해 준다.  

//메모리 누수를 검사하여 출력 창에 띄우기
inline void CheckMemoryLeak()
{
	_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
}

 

 

 

https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/find-memory-leaks-using-the-crt-library?view=msvc-170

 

CRT 라이브러리로 메모리 누수 찾기

C/C++ 디버거 및 CRT(C 런타임 라이브러리)를 통해 메모리 누수를 찾는 방법을 알아봅니다. 포함되는 기술로는 메모리 누수 보고서와 메모리 스냅샷 비교가 있습니다.

learn.microsoft.com

 

 

 

다음 글!

 

2025.01.20 - [C++/공부] - [C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(4) Log

 

[C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(4) Log

이전 글!2025.01.17 - [C++/공부] - [C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(3) Key 입력 정의 가져오기, 메모리 누수 검사 기능 추가 [C++/Console Engine] WinAPI로 커스텀 콘솔 엔진 구현하기(3) Key

narmhye.tistory.com