Forum: Compiler & IDEs Dynamisches Array


von Stefan (Gast)


Lesenswert?

Hallo Forum,

ich habe des Spaßes wegen einmal folgendes Probiert:
1
void foo(uint8_t array_size)
2
{
3
  uint8_t a[array_size];
4
5
  for(uint8_t i = 0; i < array_size; i++)
6
  {
7
    a[i] = i;
8
  }
9
  
10
  for(uint8_t i = 0; i < array_size; i++)
11
  {
12
    PORTB = a[i];
13
  }
14
}

Zugegeben der Code ist sinnfrei aber verdeutlich meine Frage: Wie 
verareitet der Compiler das? Warum funktioniert der Code? Ich meine 
eigentlich sollte man ja erst mit malloc() Speicher reservieren in der 
Größe die benötigt wird. Das scheint in diesem Fall aber nicht nötig zu 
sein!? Nutzt der Compiler zur Laufzeit transparent die notwenidgen 
Funktionen zur Speicherreservierung- /freigabe?

Ich hoffe die Frage ist nachzuvollziehen.

Viele Grüße
Stefan

von Dr. Sommer (Gast)


Lesenswert?

Das Array liegt auf dem Stack. Der Compiler macht entsprechende 
Operationen darauf um es anzulegen. Nennt sich "Variable Length Array".

von Stefan (Gast)


Lesenswert?

Komisch, die Suche hatte eigentlich keinen Thread dazu gefunden!? Jetzt 
aber doch:
Beitrag "Dynamische Speicher Reservierung"

Sorry

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.