UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FMemStackBase Class Reference

#include <MemStack.h>

+ Inheritance diagram for FMemStackBase:

Classes

struct  FTaggedMemory
 

Public Types

enum class  EPageSize : uint8 { Small , Large }
 

Public Member Functions

CORE_API FMemStackBase (EPageSize PageSize=EPageSize::Small)
 
 FMemStackBase (const FMemStackBase &)=delete
 
 FMemStackBase (FMemStackBase &&Other)
 
FMemStackBaseoperator= (FMemStackBase &&Other)
 
 ~FMemStackBase ()
 
UE_FORCEINLINE_HINT uint8PushBytes (size_t AllocSize, size_t Alignment)
 
bool CanFitInPage (size_t AllocSize, size_t Alignment) const
 
voidAlloc (size_t AllocSize, size_t Alignment)
 
UE_FORCEINLINE_HINT uint8GetTop () const
 
UE_FORCEINLINE_HINT bool IsEmpty () const
 
void Flush ()
 
UE_FORCEINLINE_HINT int32 GetNumMarks ()
 
CORE_API int32 GetByteCount () const
 
CORE_API bool ContainsPointer (const void *Pointer) const
 

Protected Attributes

bool bShouldEnforceAllocMarks = false
 

Friends

class FMemMark
 
voidoperator new (size_t Size, FMemStackBase &Mem, int32 Count)
 
voidoperator new (size_t Size, std::align_val_t Align, FMemStackBase &Mem, int32 Count)
 
voidoperator new (size_t Size, FMemStackBase &Mem, EMemZeroed Tag, int32 Count)
 
voidoperator new (size_t Size, std::align_val_t Align, FMemStackBase &Mem, EMemZeroed Tag, int32 Count)
 
voidoperator new (size_t Size, FMemStackBase &Mem, EMemOned Tag, int32 Count)
 
voidoperator new (size_t Size, std::align_val_t Align, FMemStackBase &Mem, EMemOned Tag, int32 Count)
 
voidoperator new[] (size_t Size, FMemStackBase &Mem, int32 Count)
 
voidoperator new[] (size_t Size, std::align_val_t Align, FMemStackBase &Mem, int32 Count)
 
voidoperator new[] (size_t Size, FMemStackBase &Mem, EMemZeroed Tag, int32 Count)
 
voidoperator new[] (size_t Size, std::align_val_t Align, FMemStackBase &Mem, EMemZeroed Tag, int32 Count)
 
voidoperator new[] (size_t Size, FMemStackBase &Mem, EMemOned Tag, int32 Count)
 
voidoperator new[] (size_t Size, std::align_val_t Align, FMemStackBase &Mem, EMemOned Tag, int32 Count)
 

Detailed Description

Simple linear-allocation memory stack. Items are allocated via PushBytes() or the specialized operator new()s. Items are freed en masse by using FMemMark to Pop() them.

Member Enumeration Documentation

◆ EPageSize

Enumerator
Small 
Large 

Constructor & Destructor Documentation

◆ FMemStackBase() [1/3]

FMemStackBase::FMemStackBase ( EPageSize  PageSize = EPageSize::Small)

◆ FMemStackBase() [2/3]

FMemStackBase::FMemStackBase ( const FMemStackBase )
delete

◆ FMemStackBase() [3/3]

FMemStackBase::FMemStackBase ( FMemStackBase &&  Other)
inline

◆ ~FMemStackBase()

FMemStackBase::~FMemStackBase ( )
inline

Member Function Documentation

◆ Alloc()

void * FMemStackBase::Alloc ( size_t  AllocSize,
size_t  Alignment 
)
inline

◆ CanFitInPage()

bool FMemStackBase::CanFitInPage ( size_t  AllocSize,
size_t  Alignment 
) const
inline

◆ ContainsPointer()

bool FMemStackBase::ContainsPointer ( const void Pointer) const

◆ Flush()

void FMemStackBase::Flush ( )
inline

◆ GetByteCount()

int32 FMemStackBase::GetByteCount ( ) const
Returns
the number of bytes allocated for this FMemStack that are currently in use.

◆ GetNumMarks()

UE_FORCEINLINE_HINT int32 FMemStackBase::GetNumMarks ( )
inline

◆ GetTop()

UE_FORCEINLINE_HINT uint8 * FMemStackBase::GetTop ( ) const
inline

◆ IsEmpty()

UE_FORCEINLINE_HINT bool FMemStackBase::IsEmpty ( ) const
inline

return true if this stack is empty.

◆ operator=()

FMemStackBase & FMemStackBase::operator= ( FMemStackBase &&  Other)
inline

◆ PushBytes()

UE_FORCEINLINE_HINT uint8 * FMemStackBase::PushBytes ( size_t  AllocSize,
size_t  Alignment 
)
inline

Friends And Related Symbol Documentation

◆ FMemMark

friend class FMemMark
friend

◆ operator new [1/6]

void * operator new ( size_t  Size,
FMemStackBase Mem,
EMemOned  Tag,
int32  Count = 1 
)
friend

◆ operator new [2/6]

void * operator new ( size_t  Size,
FMemStackBase Mem,
EMemZeroed  Tag,
int32  Count = 1 
)
friend

◆ operator new [3/6]

void * operator new ( size_t  Size,
FMemStackBase Mem,
int32  Count = 1 
)
friend

◆ operator new [4/6]

void * operator new ( size_t  Size,
std::align_val_t  Align,
FMemStackBase Mem,
EMemOned  Tag,
int32  Count = 1 
)
friend

◆ operator new [5/6]

void * operator new ( size_t  Size,
std::align_val_t  Align,
FMemStackBase Mem,
EMemZeroed  Tag,
int32  Count = 1 
)
friend

◆ operator new [6/6]

void * operator new ( size_t  Size,
std::align_val_t  Align,
FMemStackBase Mem,
int32  Count = 1 
)
friend

◆ operator new[] [1/6]

void * operator new[] ( size_t  Size,
FMemStackBase Mem,
EMemOned  Tag,
int32  Count = 1 
)
friend

◆ operator new[] [2/6]

void * operator new[] ( size_t  Size,
FMemStackBase Mem,
EMemZeroed  Tag,
int32  Count = 1 
)
friend

◆ operator new[] [3/6]

void * operator new[] ( size_t  Size,
FMemStackBase Mem,
int32  Count = 1 
)
friend

◆ operator new[] [4/6]

void * operator new[] ( size_t  Size,
std::align_val_t  Align,
FMemStackBase Mem,
EMemOned  Tag,
int32  Count = 1 
)
friend

◆ operator new[] [5/6]

void * operator new[] ( size_t  Size,
std::align_val_t  Align,
FMemStackBase Mem,
EMemZeroed  Tag,
int32  Count = 1 
)
friend

◆ operator new[] [6/6]

void * operator new[] ( size_t  Size,
std::align_val_t  Align,
FMemStackBase Mem,
int32  Count = 1 
)
friend

Member Data Documentation

◆ bShouldEnforceAllocMarks

bool FMemStackBase::bShouldEnforceAllocMarks = false
protected

The documentation for this class was generated from the following files: