[Solved] Variable Array Größe

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Raien
Beiträge: 17
Registriert: 19. März 2009 12:45

[Solved] Variable Array Größe

Beitrag von Raien »

Hi,

neues Problem ;)
Aaaaaber wahrsch. denken 90% beim Anblick des Titels daran, dass jetzt eine Frage wie "warum funktioniert sowas wie int array[_parameter] nicht?" kommt.
Aber genau das Gegenteil ist der Fall: Warum funktioniert das bei mir einwandrei?

Also z.B.:

Code: Alles auswählen

void f(int arrSize)
{
   int arr[arrSize];
}

In jedem Buch oder Tutorial etc. liest man, dass die Größe bei der Deklaration bereits bekannt sein muss (ist ja auch logisch, der Compiler muss ja irgendwie sein Stackframe hinkriegen).
Aber warum beanstandet er es mir nicht und es funktioniert ja auch einwandfrei.

Wäre cool wenn da jemand Erklärbär für mich spielt :wink:

Gruß
Raien
Zuletzt geändert von Raien am 2. April 2009 06:51, insgesamt 1-mal geändert.
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag von androphinx »

Ich habe keine Ahnung, warum das funktioniert, hast ja schon selber gesagt, dass es eigentlich nicht funktionieren sollte. Das einzige, wo es funktionieren sollte wäre ein:

Code: Alles auswählen

int *array = new int[size];
Mfg androphinx
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Das ist eine gnu gcc-Extension.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Raien
Beiträge: 17
Registriert: 19. März 2009 12:45

Beitrag von Raien »

Richtig, genau dafür ist ja eigentlich der Heap da...

@Christian81:
Wenn du zuviel Zeit haben solltest ;) wärs cool wenn du mir das kurz erklären könntest, also was da intern abläuft (sofern du darüber Bescheid weist)
Wird da dann code drum herum gebaut der Speicher beim Heap alloziiert oder wie muss ich mir das vorstellen ?

Danke schonmal für die 2 Antworten dachte schon ich wär zu blöd zum Lesen... =)

Gruß
Raien
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Soweit ich weiß ist es nur eine Kurzform von alloca() - macht ja auch genau das Gleiche.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Raien
Beiträge: 17
Registriert: 19. März 2009 12:45

Beitrag von Raien »

Mmmh stimmt die gibts ja auch noch ... hab mich damals schon gewundert wie das funktionieren soll da dynamisch Speicher vom Stack zu holen. Ma luckn was man dazu so im Internet findet wie das intern umgesetzt wird....

Sag auf jedenfall schonma Danke!

Gruß
Raien
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Intern umgesetzt? Bei x86 wird wohl einfach ESP verändert und fertig.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Raien
Beiträge: 17
Registriert: 19. März 2009 12:45

Beitrag von Raien »

Ja is ja schon gut war halt schon spät :lol:

Man muss ja nur ESP erhöhen und am Schluss den alten Wert einfach wieder von EBP lesen und rausspringen dann passt ja wieder alles.
Hatte gestern sone Eingebung als würde der Linker da schon alles wissen müssen was ja total balabala ist ....

Also nochmals Danke

Gruß
Raien
Antworten