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

📄 cartesianheap.h

📁 hoard内存管理器
💻 H
字号:
#ifndef _CARTESIANHEAP_H_#define _CARTESIANHEAP_H_//#include "heaplayers.h"//#include "treap.h"// NB: All objects are rounded up to at least the size of a treap node// (around 24 bytes on a 32-bit architecture).template <class SuperHeap>class CartesianHeap : public SuperHeap {  // Provide a freelist wrapper for treap nodes.  class MyTreap : public Treap<size_t, void *> {  public:    // class Node : public PerClassHeap<Treap<size_t, void *>::Node, FreelistHeap<SuperHeap> > {};  };public:  ~CartesianHeap (void) {    // FIX ME    // free everything from the treap.  }  void * malloc (size_t sz) {    // Round sz up.    sz = (sz < sizeof(MyTreap::Node)) ? sizeof(MyTreap::Node) : sz;    MyTreap::Node * n = (MyTreap::Node *) treap.lookupGreater (sz);    if (n != NULL) {      assert (n->getValue() == (void *) n);      void * ptr = n->getValue();      treap.remove (n);      // delete n; // onto a freelist      return ptr;    } else {      return SuperHeap::malloc (sz);    }  }  void free (void * ptr) {    // MyTreap::Node * n = new MyTreap::Node; // from a freelist    // cout << "n = " << (void *) n << endl;    MyTreap::Node * n = (MyTreap::Node *) ptr;    treap.insert (n, getSize(ptr), ptr, (unsigned int) ptr);  }  // Removes a pointer from the treap.  void remove (void * ptr) {    treap.remove ((MyTreap::Node *) ptr);  }    private:  MyTreap treap;};#endif // _CARTESIANHEAP_H_

⌨️ 快捷键说明

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