Date: Sun, 5 Oct 2003 22:32:00 -0500 From: Dan Nelson <dnelson@allantgroup.com> To: Robert Huff <roberthuff@rcn.com> Cc: questions@freebsd.org Subject: Re: malloc() behavior (was: Pointer please) Message-ID: <20031006033200.GL5283@dan.emsphone.com> In-Reply-To: <16256.57227.924291.290786@jerusalem.litteratus.org> References: <27DDB356-F790-11D7-9174-003065838A88@mulle-kybernetik.com> <20031006030656.GK5283@dan.emsphone.com> <16256.57227.924291.290786@jerusalem.litteratus.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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@allantgroup.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031006033200.GL5283>