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

📄 memorymanager.h

📁 这是一个从音频信号里提取特征参量的程序
💻 H
字号:
// file: $isip/class/system/MemoryManager/MemoryManager.h// version: $Id: MemoryManager.h,v 1.48 2000/11/17 19:25:53 duncan Exp $//// make sure definitions are only made once//#ifndef ISIP_MEMORY_MANAGER#define ISIP_MEMORY_MANAGER// isip include files//#ifndef ISIP_INTEGRAL#include <Integral.h>#endif#define ISIP_INTERNAL_USE_ONLY#ifndef ISIP_MEMORY_NODE#include <MemoryNode.h>#endif#ifndef ISIP_MEMORY_MANAGER_BASE#include <MemoryManagerBase.h>#endif#undef ISIP_INTERNAL_USE_ONLY#ifndef ISIP_ERROR#include <Error.h>#endif// MemoryManager: a class to preserve identically sized blocks of// memory. this class increases memory efficiency when we need to// allocate a large number of identically sized objects, such as a// linked list.//class MemoryManager {    //---------------------------------------------------------------------------  //  // public constants  //  //---------------------------------------------------------------------------public:  // define the class name  //  static const SysString CLASS_NAME;  //---------------------------------------  //  // other important constants  //  //---------------------------------------    // define the size of the allocation array  //  static const unichar ALLOC_SIZE = 32;  // define enumerations for mode. note that the mode has to be set  // through a compilation switch, see the documentation for details.  //  enum MODE { OPTIMIZE = 0, TRACK, DEF_MODE = OPTIMIZE };  //----------------------------------------  //  // default values and arguments  //  //----------------------------------------    // define the default value(s) of the class data  //  static const long DEF_GROW_SIZE = MemoryManagerBase::DEF_GROW_SIZE;  //----------------------------------------  //  // error codes  //  //----------------------------------------    static const long ERR = 1200;    //---------------------------------------------------------------------------  //  // protected data  //  //---------------------------------------------------------------------------protected:  // a virtual pointer to either an optimized or tracking MemoryManager  //  MemoryManagerBase* virtual_mgr_d;    //---------------------------------------------------------------------------  //  // required public methods  //  //---------------------------------------------------------------------------public:  // method: name  //  static const SysString& name() {    return CLASS_NAME;  }  // other static methods  //  static boolean diagnose(Integral::DEBUG debug_level);    // method: setDebug  //  static boolean setDebug(Integral::DEBUG level) {    return MemoryManagerBase::setDebug(level);  }     // method: debug  //  boolean debug(const unichar* msg) const {    return virtual_mgr_d->debug(msg);    return true;  }  // destructor/constructor(s):  //  the default and copy constructors are private  //  // method: destructor  //  ~MemoryManager() {    delete virtual_mgr_d;  }    // assign methods:  //  these methods are omitted because moving memory between  //  MemoryManager objects is nonsensical  //  // operator= methods:  //  these methods are omitted because moving memory between  //  MemoryManager objects is nonsensical  //    // i/o methods:  //  these methods are omitted because MemoryManager can not write itself to  //  an sof file  //  // equality methods:  //  these methods are omitted because they do not make sense for  //  MemoryManager objects  //  // memory management methods:  //  new and delete are omitted because memory for MemoryManager  //  objects is not managed by the MemoryManager class. clear methods  //  are omitted so the user is not allowed to be careless with  //  memory.  //  //---------------------------------------------------------------------------  //  // class-specific public methods:  //  extensions to required methods  //  //---------------------------------------------------------------------------  // constructors:  //  these two are the most commonly used constructor - you must specify  //  element size before using the memory manager.  //  MemoryManager(long elem_size,	long grow_size = DEF_GROW_SIZE);  MemoryManager(long elem_size, const SysString& name,		long grow_size = DEF_GROW_SIZE);  //---------------------------------------------------------------------------  //  // class-specific public methods:  //  chunk memory-management methods  //  //---------------------------------------------------------------------------  // method: get  //  void* get() {    return virtual_mgr_d->get();  }    // method: release  //  boolean release(void* ptr) {    return virtual_mgr_d->release(ptr);  }  // method: getBlock  //  void* getBlock(long size) {    return virtual_mgr_d->getBlock(size);  }  // method: releaseBlock  //  boolean releaseBlock(void* ptr) {    return virtual_mgr_d->releaseBlock(ptr);  }    // method: reallocateBlock  //  boolean reallocateBlock(void*** ptr, long& current_size,				 long grow_size = DEF_GROW_SIZE) {    return virtual_mgr_d->reallocateBlock(ptr, current_size,					  grow_size);  }  // method: setGrow  //  boolean setGrow(long size) {    return virtual_mgr_d->setGrow(size);  }  // method: setAllocGrow  //  boolean setAllocGrow(long size) {    return virtual_mgr_d->setAllocGrow(size);  }    //---------------------------------------------------------------------------  //  // class-specific public methods:  //  wrap operating system methods  //  //---------------------------------------------------------------------------  // method: memset  //  static boolean memset(void* ptr, long val, long size) {    return MemoryManagerBase::memset(ptr, val, size);  }  // method: memcpy  //  static boolean memcpy(void* dst, const void* src, long size) {    return MemoryManagerBase::memcpy(dst, src, size);  }  // method: memcmp  //  static long memcmp(const void* s1, const void* s2, long size) {    return ::memcmp(s1, s2, (size_t)size);  }  //---------------------------------------------------------------------------  //  // class-specific public methods:  //  static memory-management methods  //  //---------------------------------------------------------------------------  // static memory-management methods  //  static void* newStatic(long nbytes);  static boolean deleteStatic(void* ptr);  static boolean releaseStatics();  // the cleanup method for MemoryManagers called before exiting  //  static boolean releaseMgrs();    //---------------------------------------------------------------------------  //  // private methods  //  //---------------------------------------------------------------------------private:  // constructor(s):  //  the default and copy constructors are not needed, so they are  //  declared as private  //  MemoryManager();  MemoryManager(const MemoryManager& arg);    // grow methods:  //  increase the number of free nodes  //  boolean grow();  // for diagnostic purposes we might need to change the mode,  // but users should not be allowed to do this  //  boolean setMode(MODE mode, long elem_size, long grow_size);    // count node methods:  //  count the nodes in the two lists. possibly useful for debugging  //  boolean countNodes(long& used, long& free) const;};// end of include file// #endif

⌨️ 快捷键说明

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