示例#1
0
static inline void btAlignedFreeDefault(void *ptr)
{
  void* real;

  if (ptr) {
    real = *((void **)(ptr)-1);
    sFreeFunc(real);
  }
}
示例#2
0
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__)
}
示例#5
0
void dtFree(void* ptr)
{
	if (ptr)
		sFreeFunc(ptr);
}