FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
C++
Email
Print
Reprint

add to:
Del.icio.us
Digg
Google
Furl
Slashdot
Y! MyWeb
Blink
December 01, 2005

Policy-Based Memory Allocation

(Page 2 of 5)

December, 2005: Policy-Based Memory Allocation

Listing 1

template <class SuperHeap>
class SizeHeap {
  union freeObject {
    size_t sz;
    double _dummy; // for alignment.
  };
public:
  void * malloc(const size_t sz) {
    // Add room for a size field.
    freeObject * ptr = (freeObject *)
      SuperHeap::malloc(sz +
        sizeof(freeObject));
    // Store the requested size.
    ptr->sz = sz;
    return ptr + 1;
  }
  void free(void * ptr) {
    SuperHeap::free((freeObject *) ptr - 1);
  }
  static size_t getSize (const void * ptr) {
    return ((freeObject *)ptr - 1)->sz;
  }
};

Previous Page | 1 | 2 | 3 | 4 | 5 Next Page
TOP 5 ARTICLES
No Top Articles.



MICROSITES
FEATURED TOPIC

ADDITIONAL TOPICS

INFO-LINK