static inline void btAlignedFreeDefault(void *ptr) { void* real; if (ptr) { real = *((void **)(ptr)-1); sFreeFunc(real); } }
void btAlignedFreeInternal (void* ptr,int line,char* filename) { void* real; if (ptr) { gNumAlignedFree++; btDebugPtrMagic p; p.vptr = ptr; p.cptr-=sizeof(void*); real = *p.vptrptr; p.cptr-=sizeof(void*); int size = *p.iptr; p.cptr-=sizeof(void*); int allocId = *p.iptr; bool found = false; for (int i=0;i<mynumallocs;i++) { if ( allocations_id[i] == allocId) { allocations_id[i] = allocations_id[mynumallocs-1]; allocations_bytes[i] = allocations_bytes[mynumallocs-1]; mynumallocs--; found = true; break; } } gTotalBytesAlignedAllocs -= size; int diff = gNumAlignedAllocs-gNumAlignedFree; printf("free %d at address %x, from %s,line %d, size %d (total remain = %d in %d non-freed allocations)\n",allocId,real, filename,line,size, gTotalBytesAlignedAllocs, diff); sFreeFunc(real); } else { //printf("deleting a NULL ptr, no effect\n"); } }
void btAlignedFreeInternal (void* ptr,int line,char* filename) { void* real; gNumAlignedFree++; if (ptr) { real = *((void **)(ptr)-1); int size = *((int*)(ptr)-2); gTotalBytesAlignedAllocs -= size; printf("free #%d at address %x, from %s,line %d, size %d\n",gNumAlignedFree,real, filename,line,size); sFreeFunc(real); } else { printf("NULL ptr\n"); } }
void btAlignedFreeInternal (void* ptr) { if (!ptr) { return; } gNumAlignedFree++; // printf("btAlignedFreeInternal %x\n",ptr); #if defined (BT_HAS_ALIGNED_ALLOCATOR) || defined(__CELLOS_LV2__) sAlignedFreeFunc(ptr); #else void* real; if (ptr) { real = *((void **)(ptr)-1); sFreeFunc(real); } #endif // defined (BT_HAS_ALIGNED_ALLOCATOR) || defined(__CELLOS_LV2__) }
void dtFree(void* ptr) { if (ptr) sFreeFunc(ptr); }