WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

 
 
Themen-Optionen Ansicht
Alt 04.07.2004, 03:22   #15
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

Zitat:
Original geschrieben von Flink
Wobei aus logischen Gründen diese Zeile

erg=(char *)"Fehler"; //wenn ich char


ersatzlos gestrichen werden kann.

Das ist Gewohnheit und bleibt schön im Programmcode.

Wenn nicht alle logischen Fälle abgedeckt werden, wird auf den String "Fehler" verwiesen. Das ist nicht nur recht und billig, sondern programmatisch notwendig. Eine Redundanz hier in diesem Fall zu eleminieren ist strategisch nicht zu vertreten.


Zitat:

Allerdings ist dieser Code problematisch. Nach dem Verlassen der Funktion char * stab(double hm) gibt es keine Garantie mehr, dass die Speicheradressen, die vorher "stabil", "indifferent" oder "labil" als Inhalt hatten, dies noch tun werden. Sobald eine Funktion verlassen wird, kann im Rechner der von der Funktion belegte Speicher wieder freigegeben werden. Es ist nämlich möglich, dass der RAM-Speicher vorübergehend auf die Festplatte ausgelagert wird (virtueller Speicher). Daher sollte tunlichst der Speicher explizit über malloc oder ein statisches Array reserviert werden. (static oder eben eine globale Variable). Dann ist aber ein strcpy erforderlich.
Dieser Code ist deswegen nicht problematisch, weil der Compiler Stringliterale am Heap ablegt, ggf. idente Stringliterale als eine Instanz (Vorkommen) zusammenzieht, falls dieser Schalter gesetzt wurde.

Diese Art von Initialisierung wandert somit auf den Heap (deutsch Halde) und ist per definitionem als statisch zu bezeichnen.

Ich kann hier leider nicht mit Gefühlsbeschwichtigungen dienen, dies sind die Tatsachen, Gegenbeweise noch ausstehend.
kikakater ist offline   Mit Zitat antworten
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:46 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag