--- On Sat, 9/20/08, Giorgos Keramidas <[EMAIL PROTECTED]> wrote:
> > ktrace.out shows:
> > malloc_init()
> > 0x8103400 = malloc(1024)
> > malloc_init()
> > malloc_init()
> > 0x810b0b0 = malloc(400)
> > :
> > so many malloc
> > :
> > so many free
> > :
> > malloc/free combinations
> > :
> > free(0xbfbfc9c9)
> >
> > 1. This clearly shows my program is trying to free a
> memory that has
> > not been allocated. How it could have happened?
>
> Aha. This looks remarkably like an address in the runtime
> stack. It
> usually happens when you have a function that returns the
> address of a
> 'local' variable, instead of a newly allocated heap
> area, i.e.:
>
> char *
> function(void)
> {
> char buffer[100];
>
> return buf;
> }
>
This was indeed the case, worst yet, I was trying to free a part of the buffer
(as per your example above) by mistake which was not allocated by malloc.
Thank you all who helped me.
Best regards
Unga
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"