C Heap Stack Usage

Gast #3202611
Lesenswert?
• ▲
▼
Hallo,
schon lange stelle ich mir die Frage, ob es nicht irgendwo im WWW eine 
Übersicht gibt, die die C Schlüsselwörter static, volatile, extern etc. 
einmal zu aufführt, dass man sofort erkennt in welchen Zusammenhang eine 
Variablendeklaration mit einem dieser Schlüsselwörter zu welcher 
Register Belegung etc. führt?
#3202621
Lesenswert?
• ▲
▼
StandByMe schrieb:

> zu welcher
> Register Belegung etc. führt?

In C gibt es keine Register.
Genauso wie es auch keinen Stack gibt oder einen Heap.

Wie ein Compiler die Forderungen des C-Sprachstandards umsetzt, ist 
alleine dem Compilerbauer überlassen. Das wir diese Begriffe Stack+Heap 
trotzdem benutzen, liegt darin begründet, dass dies die üblichen 
Implementierungen sind. Aber gefordert sind diese Dinge nirgends vom 
Sprachstandard.
Das Schlüsselwort 'register' ist ein kleiner Sonderfall, welcher 
allerdings seit Jahrzehnten von den gängigen Compilern sowieso ignoriert 
wird. Es hat so gesehen heutzutage praktisch keine Daseinsberechtigung 
mehr.
#3202651
Lesenswert?
• ▲
▼
Peter II schrieb:
> StandByMe schrieb:
>> Gerade bei µC wird man doch darauf achten müssen, wo eine Variable
>> abgelegt wird oder nicht?
>
> ja sollte man. Dafür sollte man halt C können und dann erst die
> spezialtäten vom µC lernen.

Erstens das und zweitens hat das recht wenig mit den im Ursprungsposting 
aufgeführten Schlüsselwörtern zu tun. Denn bei denen geht es um 
Lebensdauer, Gültigkeitsbereich bzw. Sichtbarkeit und weniger darum, wo 
Variablen angelegt werden. Eben entsprechend den C-Regeln. Das sich 
daraus für einen spezifischen Compiler gewisse Folgerungen ergeben, wo 
und wie er Variablen erzeugt, liegt in der Natur der Sache, ist aber 
nichts was vom Sprachstandard definiert wird.
Hat man das Konzepte Lebensdauer von Variablen erst mal begriffen, dann 
ergibt sich daraus recht zwanglos wo eine Variable bei der Mehrheit der 
Compiler erzeugt wird. Ich sag absichtlich Mehrheit, weil ich nicht von 
allen C-Compilern die es gibt weiß, wie sie die Dinge handhaben.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.