memfree.cc (571B)
1 #include "memory" 2 3 void Memory::free(void *ptr) { 4 if (!ptr) 5 return; 6 7 static int lock; 8 9 for (unsigned i = 0; i < s_memlog.size(); i++) { 10 mutex_lock(&lock); 11 MemoryEntry ent = s_memlog[i]; 12 mutex_unlock(&lock); 13 if (ent.ptr == ptr) { 14 if (s_follow) { 15 mutex_lock(&cout); 16 cout << "Memory::free(" << ptr << ")\n"; 17 mutex_unlock(&cout); 18 } 19 ::free (ent.ptr); 20 mutex_lock(&lock); 21 s_memlog.erase(s_memlog.begin() + i); 22 mutex_unlock(&lock); 23 return; 24 } 25 } 26 cerr << "FREE Request for non previously allocated memory\n"; 27 }