Main Page | File List

# /home/jared/lsdmake/debug/src/masc++/garbage.h

    00001 #ifndef GARBAGE_H__
    00002 #define GARBAGE_H__
    00003
    00004 class Garbage_Collector {
    00005
    00006 public:
    00007         ~Garbage_Collector() {
    00008                 for(size_t i = 0; i < size; i++) {
    00009                         /*char data[256];
    00010                         std::sprintf(data,"Freed data: %s\n", mem_ptr[i]);
    00011                         OutputDebugString(data);*/
    00012                         free(mem_ptr[i]);
    00013                 }
    00014         }
    00015
    00016         Garbage_Collector() {
    00017                 mem_ptr = 0;
    00018                 size = 0;
    00019         }
    00020
    00021         void *alloc(size_t pos) {
    00022                 void *ptr = malloc(pos);
    00023                 mem_ptr = (void**)realloc(mem_ptr, sizeof(void**) * (++size));
    00024                 void **temp_ptr  = mem_ptr;
    00025                 temp_ptr  += (size-1);
    00026                 *temp_ptr = ptr;
    00027                 return ptr;
    00028         }
    00029
    00030         void *operator[](size_t pos) { return mem_ptr[pos]; }
    00031
    00032 private:
    00033         void **mem_ptr;
    00034         size_t size;
    00035
    00036
    00037 };
    00038
    00039
    00040 static Garbage_Collector mem;
    00041
    00042 #endif
    00043
    00044