Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef struct {
- unsigned int retainCount;
- void * data;
- } MemoryObject;
- bool initVM(void)
- {
- MemoryObject * o;
- if (o->retainCount == 0) {
- return true;
- } else {
- return false;
- }
- }
- void *allocate(size_t size)
- {
- MemoryObject * o;
- char * ptr;
- o = (MemoryObject *)calloc(sizeof(MemoryObject) + size, 1);
- ptr = (char *)o;
- ptr += sizeof(MemoryObject);
- o->retainCount = 1;
- o->data = ptr;
- return (void *)ptr;
- }
- bool release(void* memory)
- {
- MemoryObject * o;
- char * cptr;
- cptr = (char *)memory;
- cptr -= sizeof(MemoryObject);
- o = (MemoryObject *)cptr;
- o->retainCount--;
- if (o->retainCount == 0) {
- free(o);
- return true;
- } else {
- return false;
- }
- }
- void Retain(void * ptr)
- {
- MemoryObject * o;
- char * cptr;
- cptr = (char *)ptr;
- cptr -= sizeof(MemoryObject);
- o = (MemoryObject *)cptr;
- o->retainCount++;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement