Re: Implementierung von malloc und free unter FreeBSD

From: Bernd Walter <ticso(at)cicely12.cicely.de>
Date: Fri, 10 Sep 2004 18:55:59 +0200

On Fri, Sep 10, 2004 at 06:20:01PM +0200, Oliver Fromme wrote:
> 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.

Klar - aber Pointer auf malloc space benutzt man meistens als Stack
Variablen oder Bestandteil von dynamisch allocierten structures.
Globale Pointer sind eher selten die richtige Wahl.
Insgesammt benutzt man globale Variablen vorwiegend dann wenn man den
malloc/free Overhead vermeiden will und Platz auf dem Stack sparen
muss.

> 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.

Zum Glück ist gcc3 da deutlich besser geworden - die meisten vergessen
nur leider diese Features zu aktivieren :(

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

C ist eine Sprache, die für maschinennahes Programmieren spezialisiert
ist und für diesen Zweck ist es absolut kein Mangel, sondern ein
Vorteil.
Es gibt sehr viele Anwendungen wo man genau diese maschinennähe
unbedingt benötigt und C schon fast die einzige brauchbare Sprache
ist - eine automatische Behandlung von Pointern kann man mitunter
überhaupt nicht gebrauchen.
Wer hingegen was stärker abstrahiertes will soll C++ Autopointer
benutzen oder eine ganz andere Programmiersprache verwenden - die
Auswahl an spezialisierten Sprachen ist ja schließlich groß genug.

-- 
B.Walter                   BWCT                http://www.bwct.de
bernd(at)bwct.de                                  info(at)bwct.de
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:58:19 CEST

search this site