Stack größe bei C
-
Hallo,
habe ein paar Fragen bezüglich des Stacks:wie groß ist denn der Stack bei nem C-Programm?
Oder ist das von OS und/oder Prozessor abhängig?
Wie kann man in C die Größe des Stacks festlegen?Danke im Voraus
grüße
-
raufaser schrieb:
wie groß ist denn der Stack bei nem C-Programm?
Oder ist das von OS und/oder Prozessor abhängig?Ist vom OS abhängig, bzw. wenn du kein OS hast ("freestanding environment" nennt sich das im C-Slang) von den Einstellungen die du als Entwickler tätigst. Edit: ist dann natürlich von dem jeweiligen Chip abhängig, da eine CPU mit 1k Ram logischerweise keinen 2k-Stack haben kann
raufaser schrieb:
Wie kann man in C die Größe des Stacks festlegen?
Das hängt auch wieder von deinem "environment" ab. Die Frage ist hier im ANSI-C-Forum also eher falsch aufgehoben. Kein Vorwurf, nur ein Hinweis.
PS: Der C-Standard erwähnt das Wort "Stack" im übrigen gar nicht.
-
hm ok Danke erstmal. Das geht wahrscheinlich jetzt übers Ansi-C hinaus, aber wo kann man nachlesen wie das OS den Stack einrichtet (ich hab Windows Vista Ultimate 64-Bit, 8 GB Ram, intel quad-core @ 2,5 Ghz)?
Tim schrieb:
PS: Der C-Standard erwähnt das Wort "Stack" im übrigen gar nicht.
Aber der Stack wird doch von C-Programmen genutzt oder nicht(kenn mich mit Speichermanagment net so aus)?
grüße
-
raufaser schrieb:
wie groß ist denn der Stack bei nem C-Programm?
ein megabyte
raufaser schrieb:
Oder ist das von OS und/oder Prozessor abhängig?
ja, so ähnlich.
raufaser schrieb:
Wie kann man in C die Größe des Stacks festlegen?
da schaust du in den befehlszeilenoptionen deines compilers nach.
aber wenn ein megybyte dir nicht reicht, riechts nach programmierunsinn, und du solltest erstmal drüber nachdenken, ob mit einer kleinen änderung am programm der fette speicher nicht von malloc kommen dürfte, statt vom stack.
-
volkard schrieb:
raufaser schrieb:
wie groß ist denn der Stack bei nem C-Programm?
ein megabyte
-
rauhfaser schrieb:
aber wo kann man nachlesen wie das OS den Stack einrichtet (ich hab Windows Vista Ultimate 64-Bit, 8 GB Ram, intel quad-core @ 2,5 Ghz)?
wühl dich mal da durch: http://www.microsoft.com/whdc/system/kernel/wmm.mspx
rauhfaser schrieb:
Aber der Stack wird doch von C-Programmen genutzt oder nicht..
oft ja, für lokale variablen und rücksprungadressen z.b. aber ein c-programm ist nicht auf einen prozessorstack angewiesen, wenn das zeug auch wo anders gespeichert werden kann.
-
Ok, danke für die Antwort @volkard,
1 mb sollte für den Programmspeicher reichen.Mit malloc() speicher ich ja dann auf den Heap.
grüße
-
hmm.. wo , mit was etc. programmierst du denn???
-
rauhfaser schrieb:
Ok, danke für die Antwort @volkard,
1 mb sollte für den Programmspeicher reichen.das programm selber kommt aber nicht auf den stack. es könnte ja auch grösser als 1MB sein.
-
~fricky schrieb:
rauhfaser schrieb:
Ok, danke für die Antwort @volkard,
1 mb sollte für den Programmspeicher reichen.das programm selber kommt aber nicht auf den stack. es könnte ja auch grösser als 1MB sein.
Das Programm selbst, also der Maschinencode landet im Hauptspeicher soweit ich weiss.
-
rauhfaser schrieb:
Das Programm selbst, also der Maschinencode landet im Hauptspeicher soweit ich weiss.
kommt drauf an, was du unter 'hauptspeicher' verstehst. auf pc-gurken ist jedenfalls alles irgendwo wild im ram verteilt, viele stacks, viele 'hauptspeicher' der einzelnen prozesse, viele heaps usw.