You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
spdlog/SpeedTest/V_MemoryAllocator.h

127 lines
2.5 KiB
C++

#ifndef ____INC___V_MEMORYALLOCATOR_H___CNI____
#define ____INC___V_MEMORYALLOCATOR_H___CNI____
#include <stdio.h>
// #define ____VMEMALLOC_DEBUG
/*
class C_GlobalMemorySource
{
private:
HANDLE hGlobalHeap;
public:
C_GlobalMemorySource();
BYTE* Allocate(SIZE_T dwSize);
void Free(BYTE* lpMem);
};
extern C_GlobalMemorySource MaterieQuelle;
*/
class C_MemoryAllocatorHeap
{
private:
HANDLE hGlobalHeap;
public:
C_MemoryAllocatorHeap()
{
hGlobalHeap = GetProcessHeap();
};
BYTE* Alloc(SIZE_T size)
{
#ifdef ____VMEMALLOC_DEBUG
BYTE* lpRetVal = (BYTE*)HeapAlloc(hGlobalHeap,HEAP_ZERO_MEMORY,size);
char Buffer[151];
_snprintf(Buffer,150,"Alloc (H) %x Byte at %x,this = %x\r\n",size,lpRetVal,this);
OutputDebugString(Buffer);
return lpRetVal;
#else
return (BYTE*)HeapAlloc(hGlobalHeap,HEAP_ZERO_MEMORY,size);
#endif
};
BYTE* ReAlloc(BYTE* lpMem,SIZE_T size)
{
#ifdef ____VMEMALLOC_DEBUG
BYTE* lpRetVal = (BYTE*)HeapReAlloc(hGlobalHeap,HEAP_ZERO_MEMORY,lpMem,size);
char Buffer[151];
_snprintf(Buffer,150,"ReAlloc (H) %x Byte at %x,this = %x\r\n",size,lpRetVal,this);
OutputDebugString(Buffer);
return lpRetVal;
#else
return (BYTE*)HeapReAlloc(hGlobalHeap,HEAP_ZERO_MEMORY,lpMem,size);
#endif
};
void Free(BYTE* lpMem)
{
#ifdef ____VMEMALLOC_DEBUG
char Buffer[151];
_snprintf(Buffer,150,"Free (H) block %x,this = %x\r\n",lpMem,this);
OutputDebugString(Buffer);
#endif
if(lpMem)
HeapFree(hGlobalHeap,0,lpMem);
};
};
class C_GlobalMemAlloc
{
public:
void* operator new(size_t size);
void operator delete(void *ptr,size_t size);
};
class C_MemoryAllocatorRtl
{
private:
public:
BYTE* Alloc(SIZE_T size)
{
#ifdef ____VMEMALLOC_DEBUG
BYTE* lpRetVal = (BYTE*)malloc(size);
char Buffer[151];
_snprintf(Buffer,150,"Alloc (R) %x Byte at %x,this = %x\r\n",size,lpRetVal,this);
OutputDebugString(Buffer);
return lpRetVal;
#else
return (BYTE*)(BYTE*)malloc(size);;
#endif
};
BYTE* ReAlloc(BYTE* lpMem,SIZE_T size)
{
#ifdef ____VMEMALLOC_DEBUG
BYTE* lpRetVal = (BYTE*)realloc(lpMem,size);
char Buffer[151];
_snprintf(Buffer,150,"ReAlloc (R) %x Byte at %x,this = %x\r\n",size,lpRetVal,this);
OutputDebugString(Buffer);
return lpRetVal;
#else
return (BYTE*)realloc(lpMem,size);
#endif
};
void Free(BYTE* lpMem)
{
#ifdef ____VMEMALLOC_DEBUG
char Buffer[151];
_snprintf(Buffer,150,"Free (R) block %x,this = %x\r\n",lpMem,this);
OutputDebugString(Buffer);
#endif
if(lpMem)
free(lpMem);
};
};
#endif ____INC___V_MEMORYALLOCATOR_H___CNI____