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 messageReceived on Fri 10 Sep 2004 - 18:20:25 CEST