malloc() behavior (was: Pointer please)
Dan Nelson
dnelson at allantgroup.com
Sun Oct 5 20:32:02 PDT 2003
In the last episode (Oct 05), Robert Huff said:
> Dan Nelson writes:
> > Could be one of two problems. The program either malloced memory
> > and tried to use it without zeroing it, or it freed some memory
> > and tried to keep using it. In -current, the malloc has the J
> > debugging flag set, which fills malloced and freed memory with
> > 0xd0 (see the malloc manpage).
>
> On that page (on my 5.1 system), it says malloc() does not zero
> allocated pages. Is this a change (possibly just for CURRENT), and
> if so since when? Bexause unless I'm delusional (possible) I thought
> pages /were/ supposed to be zeroed, and doing so was one of the
> system's "as time permits" chores.
Pages handed to processes by the kernel are always zeroed, but pages
free()d then malloc()ed again are not zeroed by default on -RELEASEs,
because they usually aren't returned back to the kernel inbetween
(unless H is set, and even then it's not guaranteed). -CURRENT always
has the J flag set, which means that any memory returned by malloc or
passed to free will get overwritten with 0xD0, to aid debugging.
That's not mentioned in the manpage, although I think it is mentioned
someplace else (either FAQ or handbook).
--
Dan Nelson
dnelson at allantgroup.com
More information about the freebsd-questions
mailing list