home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
listings
/
v_03_02
/
3n02006a
< prev
next >
Wrap
Text File
|
1991-12-14
|
971b
|
43 lines
// simple.c - simple chunk allocator
#include <stdlib.h>
class Simple
{
public:
Simple *Next;
int SomeData;
void *operator new(size_t);
void operator delete(void *, size_t);
private:
enum {PERCHUNK = 128};
static Simple *FreeList;
};
void *Simple::operator new(size_t Size)
{
Simple *Free = FreeList;
if(Free)
FreeList = FreeList->Next;
else
{
Free = (Simple *)new char[PERCHUNK*sizeof(Simple)];
FreeList = Free;
for(int i = 1; i < PERCHUNK; ++i)
{
Free->Next = Free + 1;
++Free;
}
Free->Next = 0; // NULL terminator
Free = FreeList;
}
return Free;
}
void Simple::operator delete(void *Pointer, size_t)
{
Simple *This = (Simple *)Pointer;
This->Next = FreeList;
FreeList = This;
}