🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.gnu
Article #32

Re: was macht alloca?

#32
From: Andreas Borchert
Date: Thu, 03 Sep 1992 08:14
43 lines
2506 bytes
In article <5180@reto.stgt.sub.org>, hcz@reto.stgt.sub.org (Heike C Zimmerer) writes:
> In article <1992Sep01.065949.23504@rubikon.han.de> toad@rubikon.han.de 
> (Peter Cleve) writes:
> 
> >Wenn du du Block durch Function austauscht liegst du richtig.
> >Nur absolut bescheuerte Compiler werden Variablen die lokal fuer einen
> >Block definiert sind beim Blockeintritt/austritt anlegen/loeschen.
> 
> So bescheuert finde ich das nicht. Das Anlegen/Loeschen kostet nicht viel
> Assemblerinstruktionen (hier ists genau eine (1)).
> 
> Neben dem Scope gibt es aber noch einen wichtigen Grund, Variable
> in einem lokalen Block zu definieren: Speicherplatz.
> Bei einer Konstruktion der Form
>     if(..)
>     {
>         char a[100000];
>             :
>     }
>     else
>     {
>         int i[100000];
>             :
>     }
> muesste Dein Compiler die Laenge aller so deklarierten Arrays 
> fuer die Dauer der ganzen function im lokalen Stack freihalten.
> Wenn das mein Compiler machen wuerde, waers fuer mich schon ein
> Grund, den Hersteller anzumeckern.

Das ist nicht ganz richtig. Es bereitet einem Compiler ueberhaupt
keine Probleme festzustellen, dass a[] und i[] nicht gleichzeitig
verwendet werden -- also muessen sie nicht beide getrennt allokiert
werden, sondern koennen problemlos uebereinander gelegt werden.

Im uebrigen ist es normalerweise guenstiger, solche Flaechen gleich zu Beginn
der Funktion mit anzulegen, statt dies womoeglich inmitten einer Schleife
zu tun. Erst recht im Fall von leaf-Prozeduren.

-- 
_______________________________________________________________________________

Andreas Borchert, University of Ulm, SAI, D-W-7900 Ulm, Germany
Internet: borchert@mathematik.uni-ulm.de   "C is its own Virus"
Technical Details
Message-ID: <1992Sep3.081446.20396@informatik.uni-ulm.de>
Path: arc1-ca.pugleaf.net!sparky!uunet!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!ira.uka.de!News.BelWue.DE!theorie!titania.mathematik.uni-ulm.de!borchert
References: <1992Aug19.082419.13150@newsserver.rrzn.uni-hannover.de> <920829440@monad.swb.de> <SPACE.92Aug31103804@ncc1701.stgt.sub.org> <1992Sep01.065949.23504@rubikon.han.de> <5180@reto.stgt.sub.org>

Show Full Headers
Complete Article Headers
Newsgroups: de.comp.gnu
Path: arc1-ca.pugleaf.net!sparky!uunet!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!ira.uka.de!News.BelWue.DE!theorie!titania.mathematik.uni-ulm.de!borchert
From: borchert@titania.mathematik.uni-ulm.de (Andreas Borchert)
Subject: Re: was macht alloca?
Message-ID: <1992Sep3.081446.20396@informatik.uni-ulm.de>
Sender: usenet@informatik.uni-ulm.de (Name for nntp-posting)
Nntp-Posting-Host: titania.mathematik.uni-ulm.de
Organization: University of Ulm, SAI
References: <1992Aug19.082419.13150@newsserver.rrzn.uni-hannover.de>  <920829440@monad.swb.de> <SPACE.92Aug31103804@ncc1701.stgt.sub.org> <1992Sep01.065949.23504@rubikon.han.de> <5180@reto.stgt.sub.org>
Date: Thu, 3 Sep 92 08:14:46 GMT
Lines: 43