mirror of https://github.com/gabime/spdlog.git
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.
127 lines
2.5 KiB
C
127 lines
2.5 KiB
C
![]()
9 years ago
|
#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____
|