UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MallocVerify.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 MallocVerify.h: Helper class to track memory allocations
5=============================================================================*/
6
7#pragma once
8
9#include "CoreTypes.h"
10#include "HAL/MemoryBase.h"
11#include "Containers/Set.h"
12#include "Misc/ScopeLock.h"
14
15#define MALLOC_VERIFY 0
16
17#if MALLOC_VERIFY
18
22class FMallocVerify
23{
26
27public:
28
30 void Malloc(void* Ptr);
31
33 void Realloc(void* OldPtr, void* NewPtr);
34
36 void Free(void* Ptr);
37};
38
43class FMallocVerifyProxy : public FMalloc
44{
45private:
47 FMalloc* UsedMalloc;
48
49 /* Verifier object */
50 FMallocVerify Verify;
51
54
55public:
57 : UsedMalloc(InMalloc)
58 {
59 }
60
61 virtual void* Malloc(SIZE_T Size, uint32 Alignment) override
62 {
64 void* Result = UsedMalloc->Malloc(Size, Alignment);
65 Verify.Malloc(Result);
66 return Result;
67 }
68
69 virtual void* Realloc(void* Ptr, SIZE_T NewSize, uint32 Alignment) override
70 {
72 void* Result = UsedMalloc->Realloc(Ptr, NewSize, Alignment);
73 Verify.Realloc(Ptr, Result);
74 return Result;
75 }
76
77 virtual void Free(void* Ptr) override
78 {
79 if (Ptr)
80 {
82 Verify.Free(Ptr);
83 UsedMalloc->Free(Ptr);
84 }
85 }
86
87 virtual void InitializeStatsMetadata() override
88 {
89 UsedMalloc->InitializeStatsMetadata();
90 }
91
92 virtual void GetAllocatorStats(FGenericMemoryStats& OutStats) override
93 {
94 UsedMalloc->GetAllocatorStats(OutStats);
95 }
96
97 virtual void DumpAllocatorStats(FOutputDevice& Ar) override
98 {
99 UsedMalloc->DumpAllocatorStats(Ar);
100 }
101
102 virtual bool ValidateHeap() override
103 {
104 return UsedMalloc->ValidateHeap();
105 }
106
107 virtual bool Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) override
108 {
109 return UsedMalloc->Exec(InWorld, Cmd, Ar);
110 }
111
112 virtual bool GetAllocationSize(void* Original, SIZE_T& OutSize) override
113 {
114 return UsedMalloc->GetAllocationSize(Original, OutSize);
115 }
116 virtual SIZE_T QuantizeSize(SIZE_T Count, uint32 Alignment) override
117 {
118 return UsedMalloc->QuantizeSize(Count, Alignment);
119 }
120 virtual void Trim(bool bTrimThreadCaches) override
121 {
122 return UsedMalloc->Trim(bTrimThreadCaches);
123 }
124 virtual void SetupTLSCachesOnCurrentThread() override
125 {
126 return UsedMalloc->SetupTLSCachesOnCurrentThread();
127 }
128 virtual void MarkTLSCachesAsUsedOnCurrentThread() override
129 {
131 }
132
133 virtual void MarkTLSCachesAsUnusedOnCurrentThread() override
134 {
136 }
137 virtual void ClearAndDisableTLSCachesOnCurrentThread() override
138 {
139 return UsedMalloc->ClearAndDisableTLSCachesOnCurrentThread();
140 }
141
142 virtual const TCHAR* GetDescriptiveName() override
143 {
144 return UsedMalloc->GetDescriptiveName();
145 }
146};
147
148#endif // MALLOC_VERIFY
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
uint32 Size
Definition VulkanMemory.cpp:4034
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition AnsiAllocator.h:131
virtual CORE_API bool Exec(UWorld *InWorld, const TCHAR *Cmd, FOutputDevice &Ar)
Definition Exec.cpp:30
Definition MemoryBase.h:99
virtual const TCHAR * GetDescriptiveName()
Definition MemoryBase.h:248
virtual void Free(void *Original)=0
virtual bool GetAllocationSize(void *Original, SIZE_T &SizeOut)
Definition MemoryBase.h:158
virtual void * Malloc(SIZE_T Count, uint32 Alignment=DEFAULT_ALIGNMENT)=0
virtual bool ValidateHeap()
Definition MemoryBase.h:238
virtual void SetupTLSCachesOnCurrentThread()
Definition MemoryBase.h:173
virtual void MarkTLSCachesAsUnusedOnCurrentThread()
Definition MemoryBase.h:187
virtual void DumpAllocatorStats(class FOutputDevice &Ar)
Definition MemoryBase.h:221
virtual CORE_API void GetAllocatorStats(FGenericMemoryStats &out_Stats)
Definition MemoryBase.cpp:85
virtual void MarkTLSCachesAsUsedOnCurrentThread()
Definition MemoryBase.h:180
virtual void Trim(bool bTrimThreadCaches)
Definition MemoryBase.h:166
virtual CORE_API void InitializeStatsMetadata()
Definition MemoryBase.cpp:61
virtual void * Realloc(void *Original, SIZE_T Count, uint32 Alignment=DEFAULT_ALIGNMENT)=0
virtual void ClearAndDisableTLSCachesOnCurrentThread()
Definition MemoryBase.h:194
virtual SIZE_T QuantizeSize(SIZE_T Count, uint32 Alignment)
Definition MemoryBase.h:146
Definition OutputDevice.h:133
Definition ScopeLock.h:141
Definition World.h:918
UE_STRING_CLASS Result(Forward< LhsType >(Lhs), RhsLen)
Definition String.cpp.inl:732
Definition MemoryMisc.h:21