Re: Implementierung von malloc und free unter FreeBSD

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Fri, 10 Sep 2004 18:20:01 +0200 (CEST)

Bernd Walter <ticso(at)cicely12.cicely.de> wrote:
> On Fri, Sep 10, 2004 at 03:27:44PM +0200, Oliver Boris Fischer wrote:
> > Vielen Dank für Eure Antworten. Meine heutige Erfahrung bestätigt mich
> > darin, Variablen und auch Speicher immer erst explizit und sei es mit
> > char* v = NULL;
>
> Das macht man (unter C) sowieso - man sollte Variablen immer irgendwie
> initalisieren und wenn man Speicher freigibt, dann haben anschließend
> die Pointer darauf gefälligst auf NULL zu zeigen.

Globale Variablen (bss) werden automatisch mit Nullen ini-
tialisiert.

Dynamische Variablen (auf dem Stack) werden nicht initiali-
siert, daher sollte es dort der Programmierer explizit tun.
Vor allem, da der gcc ziemlich lausig darin ist, festzu-
stellen, ob eine Variable uninitialisiert verwendet wurde
oder nicht.

Letztlich ist es natürlich ein Design-Mangel der Program-
miersprache C.

Gruß
   Olli

PS: Speicher, den man mit malloc() holt, wird nicht initi-
alisiert, d.h. dort können frühere Überreste herumliegen,
allerdings nur vom selben Prozeß. Wer auf Nummer Sicher
gehen will, kann auch calloc() verwenden, das den Speicher
bei der Belegung ausnullt.

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"The last good thing written in C was
Franz Schubert's Symphony number 9."
        -- Erwin Dieterich
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 10 Sep 2004 - 18:20:25 CEST

search this site