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

📄 memorymanagertrack.h

📁 这是一个从音频信号里提取特征参量的程序
💻 H
字号:
// file: $isip/class/system/MemoryManager/MemoryManagerTrack.h// version: $Id: MemoryManagerTrack.h,v 1.14 2000/12/28 16:25:04 hamaker Exp $//// this file is for internal use only//#ifdef ISIP_INTERNAL_USE_ONLY// make sure definitions are only made once//#ifndef ISIP_MEMORY_MANAGER_TRACK#define ISIP_MEMORY_MANAGER_TRACK// isip include files//#ifndef ISIP_MEMORY_MANAGER_BASE#include "MemoryManagerBase.h"#endif#ifndef ISIP_INTEGRAL#include <Integral.h>#endif#ifndef ISIP_SYS_STRING#include <SysString.h>#endif#ifndef ISIP_SYSHEAP#include <SysHeap.h>#endif#ifndef ISIP_MEMORY_NODE#include <MemoryNode.h>#endif#ifndef ISIP_ERROR#include <Error.h>#endif// MemoryManagerTrack: this supports TRACK mode of MemoryManager and// is designed for the internal use only. this class is used for// debugging purposes when we need to track what happens to the memory// as it is allocated and deleted. it is not time efficient.//class MemoryManagerTrack : public MemoryManagerBase {    //---------------------------------------------------------------------------  //  // public constants  //  //---------------------------------------------------------------------------public:  // define the class name  //  static const SysString CLASS_NAME;  //---------------------------------------  //  // other important constants  //  //---------------------------------------    //----------------------------------------  //  // default values and arguments  //  //----------------------------------------    // define the size of the allocation array  //  static const unichar ALLOC_SIZE = 32;  //----------------------------------------  //  // error codes  //  //----------------------------------------    static const long ERR_NOTFND = 1201;  static const long ERR_NOTEMP = 1202;  //---------------------------------------------------------------------------  //  // protected data  //  //---------------------------------------------------------------------------protected:  // heap of used memory blocks  //  SysHeap used_d;  // linked lists of memory blocks  //  MemoryNode free_d;  MemoryNode used_nodes_d;    // size of memory blocks  //  long size_d;  // allocation parameter  //  long grow_size_d;    // heap of actual memory handles allocated  //  SysHeap allocated_d;    // heap of actual block memory handles allocated  //  SysHeap block_allocated_d;  // a name used for reporting errors  //  SysString name_d;  // a static list of all tracking memory managers. note that this is  // a pointer instead of an object so that we can control when it is  // allocated or deleted, if not some static objects may be created  // before it.  //  static SysHeap* allocated_mgrs_d;    //---------------------------------------------------------------------------  //  // required public methods  //  //---------------------------------------------------------------------------public:  // method: name  //  static const SysString& name() {    return CLASS_NAME;  }  // other static methods  //  static boolean diagnose(Integral::DEBUG debug_level);  // the setDebug is inherited from base class  //    // other debug methods  //  boolean debug(const unichar* message) const;     // destructor/constructor(s):  //  the default and copy constructors are private  //  ~MemoryManagerTrack();    // assign methods:  //  these methods are omitted because moving memory between  //  MemoryManagerTrack objects is nonsensical  //  // operator= methods:  //  these methods are omitted because moving memory between  //  MemoryManagerTrack objects is nonsensical  //  // i/o methods:  //  these methods are omitted because MemoryManagerTrack can not write  //  itself to an sof file  //  // equality methods:  //  these methods are omitted because they do not make sense for  //  MemoryManagerTrack objects  //  // memory management methods:  //  new and delete are omitted because  //  memory for MemoryManagerTrack objects is not managed by the  //  MemoryManagerTrack class.  // the clear method releases internal memory and carefully accounts  // for all memory managed by this object, erroring if a problem is  // found.  //  boolean clear(Integral::CMODE mode = Integral::DEF_CMODE);  //---------------------------------------------------------------------------  //  // class-specific public methods  //  extensions to required methods    //  //---------------------------------------------------------------------------    // constructors:  //  these are the most commonly used constructor - you must specify element  //  size before using the memory manager.  //  MemoryManagerTrack(long elem_size, long grow_size = DEF_GROW_SIZE);  MemoryManagerTrack(long elem_size, const SysString& name,		     long grow_size = DEF_GROW_SIZE);  //---------------------------------------------------------------------------  //  // class-specific public methods:  //  chunk memory-management methods  //  //--------------------------------------------------------------------------    // get and release methods:  //  get method gives the user a new chunk of memory and release  //  method releases a chunk of memory  //  void* get();  boolean release(void* ptr);    void* getBlock(long size);  boolean releaseBlock(void* ptr);  // reallocate methods  //  boolean reallocateBlock(void*** ptr_a, long& current_size_a,			  long grow_size_a = DEF_GROW_SIZE);    // method: setGrow  //  boolean setGrow(long size) {    if (size > 0) {      grow_size_d = size;      return true;    }    return Error::handle(name(), L"setGrow", Error::ARG, __FILE__, __LINE__);  }  // method: setAllocGrow  //  boolean setAllocGrow(long size) {    allocated_d.setGrow(size);    return true;  }    // get methods  //  long getSize() {    return size_d;  }  // method to clean up all tracking MemoryManagers  //  static boolean releaseMgrs();    //---------------------------------------------------------------------------  //  // private methods  //  //---------------------------------------------------------------------------private:  // constructor(s):  //  the default and copy constructors are not needed, so they  //  are declared private  //  MemoryManagerTrack();  MemoryManagerTrack(const MemoryManagerTrack& arg);    // grow methods:  //  increases the number of free nodes    //    boolean grow();  // count node methods:  //  count the nodes in the two lists. possibly useful for debugging  //    boolean countNodes(long& used, long& free) const;  // used to display status for error conditions  //  boolean display(boolean block_mode = false);  boolean display(void* ptr, boolean block_mode = false);  // method: registerMgr  //  boolean registerMgr() {    if (allocated_mgrs_d == (SysHeap*)NULL) {      allocated_mgrs_d = new SysHeap();    }    return allocated_mgrs_d->insert(this);  }  // method: unRegisterMgr  //  boolean unRegisterMgr() {    if (allocated_mgrs_d == (SysHeap*)NULL) {      return Error::handle(name(), L"unRegisterMgr", Error::MEM,			   __FILE__, __LINE__);    }    return allocated_mgrs_d->extract(this);  }};// end of include file// #endif#endif

⌨️ 快捷键说明

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