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