[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Memory tracking
- From: Luiz Henrique de Figueiredo <lhf@...>
- Date: Tue, 6 Dec 2005 21:00:17 -0200
> With the 'actual' lua (5.1) you can track malloc calls, see new function
> lua_newstate() where you can give an own malloc function.
Yes, see the attached file for an example.
In Lua 5.0, you can build Lua with your own allocator by changes 2 defines
in lmem.c.
--lhf
static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) {
static size_t total=0;
static int time=0;
void *optr=ptr;
(void)ud;
(void)osize;
++time;
if (nsize == 0) {
free(ptr);
total-=osize;
printf(">>> %p %p %8d - T=%d O=%d N=%d\n",ptr,optr,time,total,osize,nsize);
return NULL;
}
else {
total+=nsize-osize;
ptr=realloc(ptr, nsize);
printf(">>> %p %p %8d %c T=%d O=%d N=%d\n",ptr,optr,time,osize==0?'+':'=',total,osize,nsize);
return ptr;
if (time==480) abort();
}
}