> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XMemSetWin32HeapTrackingHooks

> XMemSetWin32HeapTrackingHooks

# XMemSetWin32HeapTrackingHooks

Win32 힙의 메모리 할당, 재할당 및 할당 해제에 대한 추적 콜백 함수를 설정합니다.

<a id="syntaxSection" />

## 구문

```cpp theme={null}
VOID XMemSetWin32HeapTrackingHooks(  
         PHEAP_TRACK_ALLOC_ROUTINE AllocRoutine,  
         PHEAP_TRACK_REALLOC_ROUTINE ReAllocRoutine,  
         PHEAP_TRACK_FREE_ROUTINE FreeRoutine  
)  
```

<a id="parametersSection" />

### 매개 변수

*AllocRoutine*   \_In\_\
형식: [PHEAP\_TRACK\_ALLOC\_ROUTINE](/reference/system/xmem/functions/pheap_track_alloc_routine)

메모리 할당에 대한 추적 콜백 함수에 대한 포인터입니다.

*ReAllocRoutine*   \_In\_\
형식: [PHEAP\_TRACK\_REALLOC\_ROUTINE](/reference/system/xmem/functions/pheap_track_realloc_routine)

메모리 재할당에 대한 추적 콜백 함수에 대한 포인터입니다.

*FreeRoutine*   \_In\_\
형식: [PHEAP\_TRACK\_FREE\_ROUTINE](/reference/system/xmem/functions/pheap_track_free_routine)

메모리 할당 해제에 대한 추적 콜백 함수에 대한 포인터입니다.

<a id="retvalSection" />

### 반환 값

형식: VOID

없음.

<a id="remarksSection" />

## 설명

이 함수를 사용하면 이러한 힙 메모리 작업이 호출될 때 GDK 메모리 관리자에 의해 호출되는 콜백 함수를 지정하여 Win32 힙 메모리 할당, 재할당 및 할당 해제를 추적할 수 있습니다. 메모리 작업 추적에 대한 자세한 내용은 [진단 및 메모리 추적](/build/console-features/memory/system-memory-diagnostics)을 참조하세요.

<Note>CRT는 CRT와 연결된 DLL/EXE의 초기화 및 진입점 동안 여러 힙 할당을 수행합니다. 이 초기화는 이러한 모듈 내의 코드 실행에 대한 전제 조건이므로, *모든* 힙 할당이 발생하기 전에 XMemSetWin32HeapTrackingHooks를 호출하는 것은 일반적으로 불가능합니다. 콜백 코드는 이 동작을 인식하고 이에 따라 적절히 처리해야 합니다.</Note>

이 함수를 호출하기 전에 먼저 다음 해당 추적 콜백 함수를 구현해야 합니다.

* `HeapAlloc`이 호출될 때 할당을 추적하려면 [PHEAP\_TRACK\_ALLOC\_ROUTINE 콜백](/reference/system/xmem/functions/pheap_track_alloc_routine) 함수를 구현합니다.
* `HeapReAlloc`이 호출될 때 재할당을 추적하려면 [PHEAP\_TRACK\_REALLOC\_ROUTINE 콜백](/reference/system/xmem/functions/pheap_track_realloc_routine) 함수를 구현합니다.
* `HeapFree`가 호출될 때 할당 해제를 추적하려면 [PHEAP\_TRACK\_FREE\_ROUTINE 콜백](/reference/system/xmem/functions/pheap_track_free_routine) 함수를 구현합니다.

추적 요구 사항에 필요한 추적 콜백 함수만 구현하면 됩니다. 힙 메모리 작업 추적을 중지하려면 이 함수를 호출하고 추적을 중지하려는 해당 힙 메모리 작업에 대해 `NULL`을 지정합니다.

다음 예제에서는 추적 콜백 함수를 정의한 다음 `XMemSetWin32HeapTrackingHooks` 함수를 사용하여 해당 추적 콜백 함수에 대한 후크를 설정하고 지웁니다.

```cpp theme={null}
void OnHeapAlloc(HANDLE hHeap, DWORD flags, SIZE_T size, PVOID addr)
{
    DebugPrint("[Heap 0x%p] Alloc %I64d bytes at addr: %p\n",
               hHeap, size, addr);
}

void OnHeapRealloc(HANDLE hHeap, DWORD flags, SIZE_T size, PVOID oldAddr, PVOID newAddr)
{
    DebugPrint("[Heap 0x%p] ReAlloc addr: 0x%p to %I64d bytes (new addr: 0x%p)\n",
               hHeap, oldAddr, size, newAddr);
}

void OnHeapFree(HANDLE hHeap, DWORD flags, PVOID addr)
{
    DebugPrint("[Heap 0x%p] Free addr: 0x%p\n",
               hHeap, addr);
}

// 후크 설정
XMemSetWin32HeapTrackingHooks(OnHeapAlloc, OnHeapReAlloc, OnHeapFree);

// 후크 지우기
XMemSetWin32HeapTrackingHooks(NULL, NULL, NULL);
```

<a id="requirementsSection" />

## 요구 사항

**헤더:** xmem.h

**라이브러리:** xmem.lib

**지원 플랫폼:** XBOX One 제품군 콘솔 및 XBOX Series 콘솔

<a id="seealsoSection" />

## 함께 보기

[메모리](/build/console-features/memory/system-memory-overview)\
[XMem](/reference/system/xmem/xmem_members)


## Related topics

- [PHEAP_TRACK_ALLOC_ROUTINE callback](/ko/reference/system/xmem/functions/pheap_track_alloc_routine.md)
- [PHEAP_TRACK_FREE_ROUTINE callback](/ko/reference/system/xmem/functions/pheap_track_free_routine.md)
- [PHEAP_TRACK_REALLOC_ROUTINE callback](/ko/reference/system/xmem/functions/pheap_track_realloc_routine.md)
- [xCurl 개요](/ko/build/console-features/networking/web-requests/intro-xcurl.md)
- [XMemSetOption](/ko/reference/system/xmem/functions/xmemsetoption.md)
