Advertisement
radchukd

Untitled

Apr 13th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.89 KB | None | 0 0
  1.  
  2. typedef struct {
  3.     unsigned int retainCount;
  4.     void       * data;
  5. } MemoryObject;
  6.  
  7. bool initVM(void)
  8. {
  9.     MemoryObject * o;
  10.     if (o->retainCount == 0) {
  11.         return true;
  12.     } else {
  13.         return false;
  14.     }
  15. }
  16.  
  17. void *allocate(size_t size)
  18. {
  19.     MemoryObject * o;
  20.     char         * ptr;
  21.     o = (MemoryObject *)calloc(sizeof(MemoryObject) + size, 1);
  22.     ptr = (char *)o;
  23.     ptr += sizeof(MemoryObject);
  24.     o->retainCount = 1;
  25.     o->data = ptr;
  26.     return (void *)ptr;
  27. }  
  28.  
  29. bool release(void* memory)
  30. {
  31.     MemoryObject * o;
  32.     char         * cptr;
  33.     cptr = (char *)memory;
  34.     cptr -= sizeof(MemoryObject);
  35.     o = (MemoryObject *)cptr;
  36.     o->retainCount--;
  37.     if (o->retainCount == 0) {
  38.         free(o);
  39.         return true;
  40.     } else {
  41.         return false;
  42.     }
  43. }
  44.  
  45. void Retain(void * ptr)
  46. {
  47.     MemoryObject * o;
  48.     char         * cptr;
  49.  
  50.     cptr = (char *)ptr;
  51.     cptr -= sizeof(MemoryObject);
  52.     o = (MemoryObject *)cptr;
  53.  
  54.     o->retainCount++;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement