gtMemorySystem
export class
Класс содержащий статичные методы для работы с памятью.
Память выделенная этим классом выделяется в модуле gentle, и желательно чтобы вся память выделялась и освобождалась им.
Методы
gtMemorySystem::allocate
GT_API static void * allocate( u32 size, bool exceptions = false, bool zeroMemory = false );
Выделить память в количестве size байт.
exceptions - генерировать ОС-зависимые исключения.
zeroMemory - заполнять ли память нулями.
exceptions и zeroMemory - опции функции WinAPI. Для других ОС возможно придётся использовать стандартные memset и исключения.
gtMemorySystem::free
GT_API static bool free( void * ptr );
Освободить память выделенную с помощью gtMemorySystem::allocate
gtMemorySystem::reallocate
GT_API static void * reallocate( u32 size, void * ptr, bool exceptions = false, bool zeroMemory = false );
Выделить дополнительную память.
gtMemorySystem::set
Заполнить массив указанным значением (заполнение не побайтовое как у memset).
int arr[ 10 ]; int val = 666; set( arr, &val, sizeof( int ), 10 ); Для короткой записи смотрите константу gtMemSet.
Макросы
gtMemAlloc
#define gtMemAlloc(size) gtMemorySystem::allocate((size))
gtMemAllocE
#define gtMemAllocE(size) gtMemorySystem::allocate((size),true)
gtMemFree
#define gtMemFree(ptr) gtMemorySystem::free((ptr));ptr=nullptr
gtMemReAlloc
#define gtMemReAlloc(ptr,size) gtMemorySystem::reallocate((size),(ptr))
Дополнительные типы и константа
struct gtMemSet_t{ template<typename type> void operator()(type val,void*ptr,u32 size) const { gtMemorySystem::set(ptr,&val,sizeof(type),size); } }const gtMemSet; |