crossroads

Git mirror of https://crossroads.e-tunity.com/
git clone git://git.finwo.net/app/crossroads
Log | Files | Refs | LICENSE

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 }