⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmgr.h

📁 ftgl-2.1.2 夸平台的opengl显示字体
💻 H
字号:
// ---------------------------------------------------------------------------------------------------------------------------------//                                     _     //                                    | |    //  _ __ ___  _ __ ___   __ _ _ __    | |__  // | '_ ` _ \| '_ ` _ \ / _` | '__|   | '_ \ // | | | | | | | | | | | (_| | |    _ | | | |// |_| |_| |_|_| |_| |_|\__, |_|   (_)|_| |_|//                       __/ |               //                      |___/                //// Memory manager & tracking software//// Best viewed with 8-character tabs and (at least) 132 columns//// ---------------------------------------------------------------------------------------------------------------------------------//// Restrictions & freedoms pertaining to usage and redistribution of this software:////  * This software is 100% free//  * If you use this software (in part or in whole) you must credit the author.//  * This software may not be re-distributed (in part or in whole) in a modified//    form without clear documentation on how to obtain a copy of the original work.//  * You may not use this software to directly or indirectly cause harm to others.//  * This software is provided as-is and without warrantee. Use at your own risk.//// For more information, visit HTTP://www.FluidStudios.com//// ---------------------------------------------------------------------------------------------------------------------------------// Originally created on 12/22/2000 by Paul Nettle//// Copyright 2000, Fluid Studios, Inc., all rights reserved.// ---------------------------------------------------------------------------------------------------------------------------------#ifndef	_H_MMGR#define	_H_MMGR
#ifdef __APPLE_CC__
//MAC hjm 7/11/2000typedef unsigned long size_t;#endif
// ---------------------------------------------------------------------------------------------------------------------------------// For systems that don't have the __FUNCTION__ variable, we can just define it here// ---------------------------------------------------------------------------------------------------------------------------------#define	__FUNCTION__ "??"// ---------------------------------------------------------------------------------------------------------------------------------// Types// ---------------------------------------------------------------------------------------------------------------------------------typedef	struct tag_au{	size_t		actualSize;	size_t		reportedSize;	void		*actualAddress;	void		*reportedAddress;	char		sourceFile[40];	char		sourceFunc[40];	unsigned int	sourceLine;	unsigned int	allocationType;	bool		breakOnDealloc;	bool		breakOnRealloc;	unsigned int	allocationNumber;	struct tag_au	*next;	struct tag_au	*prev;} sAllocUnit;typedef	struct{	unsigned int	totalReportedMemory;	unsigned int	totalActualMemory;	unsigned int	peakReportedMemory;	unsigned int	peakActualMemory;	unsigned int	accumulatedReportedMemory;	unsigned int	accumulatedActualMemory;	unsigned int	accumulatedAllocUnitCount;	unsigned int	totalAllocUnitCount;	unsigned int	peakAllocUnitCount;} sMStats;// ---------------------------------------------------------------------------------------------------------------------------------// External constants// ---------------------------------------------------------------------------------------------------------------------------------extern	const	unsigned int	m_alloc_unknown;extern	const	unsigned int	m_alloc_new;extern	const	unsigned int	m_alloc_new_array;extern	const	unsigned int	m_alloc_malloc;extern	const	unsigned int	m_alloc_calloc;extern	const	unsigned int	m_alloc_realloc;extern	const	unsigned int	m_alloc_delete;extern	const	unsigned int	m_alloc_delete_array;extern	const	unsigned int	m_alloc_free;// ---------------------------------------------------------------------------------------------------------------------------------// Used by the macros// ---------------------------------------------------------------------------------------------------------------------------------void		m_setOwner(const char *file, const unsigned int line, const char *func);// ---------------------------------------------------------------------------------------------------------------------------------// Allocation breakpoints// ---------------------------------------------------------------------------------------------------------------------------------bool		&m_breakOnRealloc(void *reportedAddress);bool		&m_breakOnDealloc(void *reportedAddress);// ---------------------------------------------------------------------------------------------------------------------------------// The meat of the memory tracking software// ---------------------------------------------------------------------------------------------------------------------------------void		*m_allocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc,			     const unsigned int allocationType, const size_t reportedSize);void		*m_reallocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc,			       const unsigned int reallocationType, const size_t reportedSize, void *reportedAddress);void		m_deallocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc,			      const unsigned int deallocationType, const void *reportedAddress);// ---------------------------------------------------------------------------------------------------------------------------------// Utilitarian functions// ---------------------------------------------------------------------------------------------------------------------------------bool		m_validateAddress(const void *reportedAddress);bool		m_validateAllocUnit(const sAllocUnit *allocUnit);bool		m_validateAllAllocUnits();// ---------------------------------------------------------------------------------------------------------------------------------// Unused RAM calculations// ---------------------------------------------------------------------------------------------------------------------------------unsigned int	m_calcUnused(const sAllocUnit *allocUnit);unsigned int	m_calcAllUnused();// ---------------------------------------------------------------------------------------------------------------------------------// Logging and reporting// ---------------------------------------------------------------------------------------------------------------------------------void		m_dumpAllocUnit(const sAllocUnit *allocUnit, const char *prefix = "");void		m_dumpMemoryReport(const char *filename = "memreport.log", const bool overwrite = true);sMStats		m_getMemoryStatistics();// ---------------------------------------------------------------------------------------------------------------------------------// Variations of global operators new & delete// ---------------------------------------------------------------------------------------------------------------------------------void	*operator new(size_t reportedSize);void	*operator new[](size_t reportedSize);void	*operator new(size_t reportedSize, const char *sourceFile, int sourceLine);void	*operator new[](size_t reportedSize, const char *sourceFile, int sourceLine);void	operator delete(void *reportedAddress);void	operator delete[](void *reportedAddress);#endif // _H_MMGR// ---------------------------------------------------------------------------------------------------------------------------------// Macros -- "Kids, please don't try this at home. We're trained professionals here." :)// ---------------------------------------------------------------------------------------------------------------------------------#include "nommgr.h"#define	new		(m_setOwner  (__FILE__,__LINE__,__FUNCTION__),false) ? NULL : new#define	delete		(m_setOwner  (__FILE__,__LINE__,__FUNCTION__),false) ? m_setOwner("",0,"") : delete#define	malloc(sz)	m_allocator  (__FILE__,__LINE__,__FUNCTION__,m_alloc_malloc,sz)#define	calloc(sz)	m_allocator  (__FILE__,__LINE__,__FUNCTION__,m_alloc_calloc,sz)#define	realloc(ptr,sz)	m_reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr)#define	free(ptr)	m_deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr)// ---------------------------------------------------------------------------------------------------------------------------------// mmgr.h - End of file// ---------------------------------------------------------------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -