mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu Speicher


Autor: Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja.

Autor: Zeusi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
malloc? alloc? wenn ich mich nicht irre kann man den Speicher während 
der Laufzeit auch wieder Freigeben,..

Grüüüße

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn ich einen char string[1000] deklariere, wo wird dieser
> Speicherbereich reserviert? Im RAM korrekt?

Kommt drauf an. Welches System? Welche Hardware? Welche 
Programmiersprache?

Autor: Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Linux BS, ARM9, C-Sprache

Woher wies ich wo diese Array Werte gespeichert werden ?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok ! Alles klar - Prinzip verstanden !
Ich bedanke mich für diese Infos!!!

Der Neuling dankt den Leuten die immer so viel Geduld mit den Anfängern 
haben!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.