UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MemoryBase.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
7#include "HAL/PlatformCrt.h"
8#include "Misc/Exec.h"
9#include "Misc/OutputDevice.h"
10#include "Templates/Atomic.h"
11
12class UWorld;
13template <typename T> class TAtomic;
14
15#ifndef UPDATE_MALLOC_STATS
16 #define UPDATE_MALLOC_STATS 1
17#endif
18
19enum
20{
21 // Default allocator alignment. If the default is specified, the allocator applies to engine rules.
22 // Blocks >= 16 bytes will be 16-byte-aligned, Blocks < 16 will be 8-byte aligned. If the allocator does
23 // not support allocation alignment, the alignment will be ignored.
25
26 // Minimum allocator alignment
28};
29
30
36namespace UE::Private
37{
39}
40
46UE_DEPRECATED(5.6, "Consider using FMemory::Malloc instead of accessing GMalloc directly.")
47CORE_API extern class FMalloc* const& GMalloc;
48
51
54
55
62{
63public:
70 CORE_API void* operator new(size_t Size);
71
77 CORE_API void operator delete(void* Ptr);
78
85 void* operator new[](size_t Size);
86
92 void operator delete[](void* Ptr);
93};
94
96class FMalloc :
98 public FExec
99{
100public:
104 virtual void* Malloc( SIZE_T Count, uint32 Alignment=DEFAULT_ALIGNMENT ) = 0;
105
110 CORE_API virtual void* TryMalloc( SIZE_T Count, uint32 Alignment=DEFAULT_ALIGNMENT );
111
115 virtual void* Realloc( void* Original, SIZE_T Count, uint32 Alignment=DEFAULT_ALIGNMENT ) = 0;
116
122 CORE_API virtual void* TryRealloc(void* Original, SIZE_T Count, uint32 Alignment=DEFAULT_ALIGNMENT);
123
127 virtual void Free( void* Original ) = 0;
128
132 CORE_API virtual void* MallocZeroed(SIZE_T Count, uint32 Alignment = DEFAULT_ALIGNMENT);
133
138 CORE_API virtual void* TryMallocZeroed(SIZE_T Count, uint32 Alignment = DEFAULT_ALIGNMENT);
139
147 {
148 return Count; // Default implementation has no way of determining this
149 }
150
159 {
160 return false; // Default implementation has no way of determining this
161 }
162
166 virtual void Trim(bool bTrimThreadCaches)
167 {
168 }
169
174 {
175 }
176
181 {
182 }
183
188 {
189 }
190
195 {
196 }
197
202 CORE_API virtual void InitializeStatsMetadata();
203
204#if UE_ALLOW_EXEC_COMMANDS
208 virtual bool Exec( UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar ) override
209 {
210 return false;
211 }
212#endif // UE_ALLOW_EXEC_COMMANDS
213
215 CORE_API virtual void UpdateStats();
216
219
221 virtual void DumpAllocatorStats( class FOutputDevice& Ar )
222 {
223 Ar.Logf( TEXT("Allocator Stats for %s: (not implemented)" ), GetDescriptiveName() );
224 }
225
230 virtual bool IsInternallyThreadSafe() const
231 {
232 return false;
233 }
234
238 virtual bool ValidateHeap()
239 {
240 return( true );
241 }
242
248 virtual const TCHAR* GetDescriptiveName()
249 {
250 return TEXT("Unspecified allocator");
251 }
252
256 virtual void OnMallocInitialized() {}
257
261 virtual void OnPreFork() {}
262
266 virtual void OnPostFork() {}
267
272 {
273 return 0;
274 }
275
282 {
283 return 0;
284 }
285
286protected:
287 friend struct FCurrentFrameCalls;
288
289#if !UE_BUILD_SHIPPING
290public:
293#endif
294};
CORE_API FMalloc *const & GMalloc
Definition CoreGlobals.cpp:63
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TSAN_ATOMIC(Type)
Definition CoreMiscDefines.h:147
#define TEXT(x)
Definition Platform.h:1272
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
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
CORE_API class FMalloc ** GFixedMallocLocationPtr
Definition CoreGlobals.cpp:57
@ MIN_ALIGNMENT
Definition MemoryBase.h:27
@ DEFAULT_ALIGNMENT
Definition MemoryBase.h:24
CORE_API class FMalloc *const & GMalloc
Definition CoreGlobals.cpp:63
uint32 Size
Definition VulkanMemory.cpp:4034
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Exec.h:29
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 void OnMallocInitialized()
Definition MemoryBase.h:256
virtual void OnPreFork()
Definition MemoryBase.h:261
static CORE_API TAtomic< uint64 > MaxSingleAlloc
Definition MemoryBase.h:292
virtual bool GetAllocationSize(void *Original, SIZE_T &SizeOut)
Definition MemoryBase.h:158
virtual CORE_API void * TryMalloc(SIZE_T Count, uint32 Alignment=DEFAULT_ALIGNMENT)
Definition MemoryBase.cpp:95
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 uint64 GetTotalFreeCachedMemorySize() const
Definition MemoryBase.h:281
virtual CORE_API void * MallocZeroed(SIZE_T Count, uint32 Alignment=DEFAULT_ALIGNMENT)
Definition MemoryBase.cpp:105
virtual bool IsInternallyThreadSafe() const
Definition MemoryBase.h:230
virtual void MarkTLSCachesAsUnusedOnCurrentThread()
Definition MemoryBase.h:187
virtual CORE_API void * TryRealloc(void *Original, SIZE_T Count, uint32 Alignment=DEFAULT_ALIGNMENT)
Definition MemoryBase.cpp:100
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 CORE_API void UpdateStats()
Definition MemoryBase.cpp:72
virtual void OnPostFork()
Definition MemoryBase.h:266
virtual void ClearAndDisableTLSCachesOnCurrentThread()
Definition MemoryBase.h:194
virtual SIZE_T QuantizeSize(SIZE_T Count, uint32 Alignment)
Definition MemoryBase.h:146
virtual uint64 GetImmediatelyFreeableCachedMemorySize() const
Definition MemoryBase.h:271
virtual CORE_API void * TryMallocZeroed(SIZE_T Count, uint32 Alignment=DEFAULT_ALIGNMENT)
Definition MemoryBase.cpp:117
Definition OutputDevice.h:133
void Logf(const FmtType &Fmt)
Definition OutputDevice.h:234
Definition MemoryBase.h:62
Definition Atomic.h:538
Definition World.h:918
Definition PackageReader.cpp:44
Definition MemoryBase.cpp:18
Definition MemoryMisc.h:21