힙 할당 함수의 디버그 버전
이 항목은 다음 언어에 적용됩니다.
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
네이티브 전용 |
||||
Pro, Premium 및 Ultimate |
네이티브 전용 |
C 런타임 라이브러리에 힙 할당 함수의 특별한 디버그 버전이 있습니다. 이러한 함수는 _dbg가 추가된 릴리스 버전과 이름이 같습니다. 이 항목에서는 malloc과 _malloc_dbg를 예로 들어 CRT 함수의 릴리스 버전과 _dbg 버전의 차이를 설명합니다.
_DEBUG가 정의된 경우 CRT는 모든 malloc 호출을 _malloc_dbg에 매핑합니다. 따라서 디버깅하는 동안의 이점을 위해 malloc 대신 _malloc_dbg를 사용하여 코드를 다시 쓸 필요는 없습니다.
그러나 _malloc_dbg를 명시적으로 호출할 수는 있습니다. _malloc_dbg를 명시적으로 호출하면 다음과 같은 이점이 있습니다.
_CLIENT_BLOCK 형식 할당 추적
할당이 필요한 소스 파일과 줄 번호 저장
malloc 호출을 _malloc_dbg로 변환하지 않으려면 malloc에 대한 래퍼에 의존하지 않고 전처리기에서 모든 malloc 호출을 _malloc_dbg로 직접 매핑하게 하는 _CRTDBG_MAP_ALLOC을 정의하여 소스 파일 정보를 가져올 수 있습니다.
클라이언트 블록에서 별도의 할당 형식을 추적하려면 _malloc_dbg를 직접 호출하고 blockType 매개 변수를 _CLIENT_BLOCK에 설정해야 합니다.
_DEBUG가 정의되지 않은 경우 malloc 호출은 방해받지 않으며 _malloc_dbg 호출은 malloc으로 확인되고 _CRTDBG_MAP_ALLOC 정의는 무시되며 할당 요청과 관련된 소스 파일 정보는 제공되지 않습니다. malloc에 블록 형식 매개 변수가 없기 때문에 _CLIENT_BLOCK 형식 요청은 표준 할당으로 취급됩니다.