1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 11:38:21 +02:00
Beef/BeefySysLib/util/AllocDebug.h
2019-08-23 11:56:54 -07:00

87 lines
1.8 KiB
C++

#pragma once
//#define BP_ALLOC_TRACK
#ifdef BF_PLATFORM_WINDOWS
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
//#define USE_BF_ALLOCDEBUG
#ifdef USE_BF_ALLOCDEBUG
#define DBG_NEW new ( __FILE__ , __LINE__ )
#define new DBG_NEW
#undef delete
#pragma push_macro("new")
#undef new
#undef delete
void* operator new(std::size_t size);
void* operator new(std::size_t size, const char* fileName, int lineNum);
void operator delete(void* ptr, const char* fileName, int lineNum);
void operator delete[](void* ptr, const char* fileName, int lineNum);
void operator delete(void* ptr);
void operator delete[](void* ptr);
#pragma pop_macro("new")
/*#undef delete
#define delete DbgHeapDeleter(__FILE__, __LINE__) <<
void DbgHeapFree(const void* ptr, const char* fileName, int lineNum);
struct DbgHeapDeleter
{
const char* mFileName;
int mLineNum;
DbgHeapDeleter(const char* fileName, int lineNum)
{
mFileName = fileName;
mLineNum = lineNum;
}
void operator<<(const void* ptr)
{
DbgHeapFree(ptr, mFileName, mLineNum);
}
};*/
extern int gDbgHeapTransactionIdx;
void DbgHeapCheck();
void DbgHeapCheckLeaks();
#elif (defined _WIN32) && (!defined BF_MINGW)//USE_BF_ALLOCDEBUG
#ifndef DBG_NEW
#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
#define new DBG_NEW
#endif
#define DbgHeapCheck _CrtCheckMemory
#define DbgHeapCheckLeaks _CrtDumpMemoryLeaks
#endif // USE_BF_ALLOCDEBUG
#endif // BF_PLATFORM_WINDOWS
void BpAllocName(const char* str, int size);
void BpDump();
#ifdef BP_ALLOC_TRACK
#define BP_ALLOC(str, size) BpAllocName(str, size);
#define BP_ALLOC_RAW_T(T) BpAllocName(#T, sizeof(T))
//#define BP_ALLOC_T(T) BpAllocName(#T, sizeof(T))
#define BP_ALLOC_T(T)
#else
#define BP_ALLOC(str, size)
#define BP_ALLOC_T(T)
#define BP_ALLOC_RAW_T(T)
#endif