kallocator.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef KALLOCATOR_H
00027 #define KALLOCATOR_H
00028
00029 #include <qvaluelist.h>
00030 #include "kdelibs_export.h"
00031
00032 class KZoneAllocatorPrivate;
00033
00034
00046 class KDECORE_EXPORT KZoneAllocator
00047 {
00048 public:
00053 KZoneAllocator(unsigned long _blockSize = 8*1024);
00054
00058 ~KZoneAllocator();
00059
00065 void* allocate(size_t _size);
00066
00087 void deallocate(void *ptr);
00088
00109 void free_since(void *ptr);
00110
00111 protected:
00113 class MemBlock;
00115 typedef QValueList<MemBlock *> MemList;
00116 void addBlock(MemBlock *b);
00117 void delBlock(MemBlock *b);
00118 void insertHash(MemBlock *b);
00119 void initHash();
00121 MemBlock *currentBlock;
00123 unsigned long blockSize;
00125 unsigned long blockOffset;
00127 unsigned int log2;
00129 unsigned int num_blocks;
00131 MemList **hashList;
00133 unsigned int hashSize;
00135 bool hashDirty;
00136 private:
00137 KZoneAllocatorPrivate *d;
00138 };
00139
00140 #endif
|