[vox-tech] malloc() is ... old school?

Tim Riley vox-tech@lists.lugod.org
Thu, 20 Mar 2003 10:15:43 -0800


"Micah J. Cowan" wrote:

> On Wed, Mar 19, 2003 at 06:08:13PM -0800, Peter Jay Salzman wrote:
> > i've heard this from two people now.
> >
> > some students are being taught they should stay clear of malloc() and
> > instead use calloc() because calloc() is the "old school" way of getting
> > memory dynamically.  they're taught that malloc() may not be present in
> > all implementations of the C library.  again, because calloc() is "old
> > school".  presumably, malloc() is ... new fangled.   ;)
>
> This is absolutely untrue.

Why are you so *absolutely* sure of yourself? It has been
documented that people demean others as a way of self-
promotion.

> The first library had malloc(). Always
> using calloc() would be a ridiculously inefficient way to obtain
> memory if you're going to just set it again anyway.

It might seem inefficient to set memory twice, but you're looking
at it from the CPU's point of view. Instead, by looking at it from
the programmer's point of view, the extra nanoseconds it takes
to always get a clean data structure is worth hours of time savings
by not having to trace a core dump.

But in no way were the authors of calloc() being "ridiculous" in their
implementation.

>
>
> Even if there is a grain of truth in it, it could only be for
> *extremely* old, pre-ANSI implementations which didn't even bother
> with being portable, since the first libraries had malloc(), and
> malloc() is obviously in the first edition of K&R C.
>
> IMO, the professor (like way too many C teachers) is an idiot.

"Judge not, and ye shall not be judged."

>
>

<snip>