UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MallocThreadSafeProxy.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/MemoryBase.h"
8#include "Misc/ScopeLock.h"
9
14{
15private:
17 FMalloc* UsedMalloc;
19 FCriticalSection SynchronizationObject;
20
21public:
29 : UsedMalloc( InMalloc )
30 {}
31
32 virtual void InitializeStatsMetadata() override
33 {
34 UsedMalloc->InitializeStatsMetadata();
35 }
36
40 virtual void* Malloc( SIZE_T Size, uint32 Alignment ) override
41 {
42 FScopeLock ScopeLock( &SynchronizationObject );
43 return UsedMalloc->Malloc( Size, Alignment );
44 }
45
49 virtual void* Realloc( void* Ptr, SIZE_T NewSize, uint32 Alignment ) override
50 {
51 FScopeLock ScopeLock( &SynchronizationObject );
52 return UsedMalloc->Realloc( Ptr, NewSize, Alignment );
53 }
54
58 virtual void Free( void* Ptr ) override
59 {
60 if( Ptr )
61 {
62 FScopeLock ScopeLock( &SynchronizationObject );
63 UsedMalloc->Free( Ptr );
64 }
65 }
66
69 {
70 FScopeLock ScopeLock( &SynchronizationObject );
71 UsedMalloc->GetAllocatorStats( out_Stats );
72 }
73
75 virtual void DumpAllocatorStats( class FOutputDevice& Ar ) override
76 {
77 FScopeLock ScopeLock( &SynchronizationObject );
78 UsedMalloc->DumpAllocatorStats( Ar );
79 }
80
84 virtual bool ValidateHeap() override
85 {
86 FScopeLock Lock( &SynchronizationObject );
87 return( UsedMalloc->ValidateHeap() );
88 }
89
90#if UE_ALLOW_EXEC_COMMANDS
91 virtual bool Exec( UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar ) override
92 {
93 FScopeLock ScopeLock( &SynchronizationObject );
94 return UsedMalloc->Exec( InWorld, Cmd, Ar);
95 }
96#endif // UE_ALLOW_EXEC_COMMANDS
97
105 virtual bool GetAllocationSize(void *Original, SIZE_T &SizeOut) override
106 {
107 FScopeLock ScopeLock( &SynchronizationObject );
108 return UsedMalloc->GetAllocationSize(Original,SizeOut);
109 }
110
111 virtual const TCHAR* GetDescriptiveName() override
112 {
113 FScopeLock ScopeLock( &SynchronizationObject );
114 check(UsedMalloc);
115 return UsedMalloc->GetDescriptiveName();
116 }
117
118 virtual void Trim(bool bTrimThreadCaches) override
119 {
120 FScopeLock ScopeLock(&SynchronizationObject);
121 check(UsedMalloc);
122 UsedMalloc->Trim(bTrimThreadCaches);
123 }
124
125 virtual bool IsInternallyThreadSafe() const override
126 {
127 return true;
128 }
129
130 virtual void OnMallocInitialized() override
131 {
132 UsedMalloc->OnMallocInitialized();
133 }
134
135 virtual void OnPreFork() override
136 {
137 UsedMalloc->OnPreFork();
138 }
139
140 virtual void OnPostFork() override
141 {
142 UsedMalloc->OnPostFork();
143 }
144};
#define check(expr)
Definition AssertionMacros.h:314
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
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
uint32 Size
Definition VulkanMemory.cpp:4034
uint32_t uint32
Definition binka_ue_file_header.h:6
virtual CORE_API bool Exec(UWorld *InWorld, const TCHAR *Cmd, FOutputDevice &Ar)
Definition Exec.cpp:30
Definition MallocThreadSafeProxy.h:14
virtual void OnPreFork() override
Definition MallocThreadSafeProxy.h:135
virtual void DumpAllocatorStats(class FOutputDevice &Ar) override
Definition MallocThreadSafeProxy.h:75
virtual bool GetAllocationSize(void *Original, SIZE_T &SizeOut) override
Definition MallocThreadSafeProxy.h:105
virtual void GetAllocatorStats(FGenericMemoryStats &out_Stats) override
Definition MallocThreadSafeProxy.h:68
virtual bool ValidateHeap() override
Definition MallocThreadSafeProxy.h:84
FMallocThreadSafeProxy(FMalloc *InMalloc)
Definition MallocThreadSafeProxy.h:28
virtual const TCHAR * GetDescriptiveName() override
Definition MallocThreadSafeProxy.h:111
virtual void * Malloc(SIZE_T Size, uint32 Alignment) override
Definition MallocThreadSafeProxy.h:40
virtual void InitializeStatsMetadata() override
Definition MallocThreadSafeProxy.h:32
virtual void Trim(bool bTrimThreadCaches) override
Definition MallocThreadSafeProxy.h:118
virtual void OnPostFork() override
Definition MallocThreadSafeProxy.h:140
virtual bool IsInternallyThreadSafe() const override
Definition MallocThreadSafeProxy.h:125
virtual void OnMallocInitialized() override
Definition MallocThreadSafeProxy.h:130
virtual void Free(void *Ptr) override
Definition MallocThreadSafeProxy.h:58
virtual void * Realloc(void *Ptr, SIZE_T NewSize, uint32 Alignment) override
Definition MallocThreadSafeProxy.h:49
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
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 DumpAllocatorStats(class FOutputDevice &Ar)
Definition MemoryBase.h:221
virtual CORE_API void GetAllocatorStats(FGenericMemoryStats &out_Stats)
Definition MemoryBase.cpp:85
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 OnPostFork()
Definition MemoryBase.h:266
Definition OutputDevice.h:133
Definition ScopeLock.h:141
Definition World.h:918
Definition MemoryMisc.h:21