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
00010
00011
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