Frage zu Speicher

Gast #647226
Lesenswert?

Wenn ich einen char string[1000] deklariere, wo wird dieser 
Speicherbereich reserviert? Im RAM korrekt?

Die 1000 Byte werden während der gesamtem Programmlaufzeit gebunden. Bei 
einer nur selten genutzten Variablen wäre das eine 
Ressourcenverschwendung.
Falls ich nur ein Bruchteil benötige habe ich wieder eine 
Ressourcenverschwendung! Korrekt?

Ich bin absoluter Neuling des wegen meine etwas bescheidende Frage..
#647252
Lesenswert?

Neuling wrote:
> Wenn ich einen char string[1000] deklariere, wo wird dieser
> Speicherbereich reserviert? Im RAM korrekt?
>
> Die 1000 Byte werden während der gesamtem Programmlaufzeit gebunden.

Nein, nur für die Lebenszeit dieser Variable
Wird sie in einer Unterfunktion definiert, ist der RAM nach Verlassen 
wieder frei (und die Variable ungültig).


> Bei
> einer nur selten genutzten Variablen wäre das eine
> Ressourcenverschwendung.

Spricht ja für eine lokale Definition nur bei Benutzung.


> Falls ich nur ein Bruchteil benötige habe ich wieder eine
> Ressourcenverschwendung! Korrekt?

In jedem Fall mußt Du die maximale Auslastung kennen und dann wäre es 
blöd, mehr als diese Länge zu reservieren.


Einfach nur auf blauen Dunst mal irgendwelche Puffergrößen zu definieren 
ist die Hauptursache von Blue-Screens. Egal wie groß, ohne Prüfung ist 
sie irgendwann zu klein.
Deshalb gibts den sizeof-Operator, den man z.B zur Begrenzung der 
Eingabe benutzen kann.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren