Stackgröße einstellen
-
Hallo,
kann mir jemand sagen, wie man die Stackgröße einstellt, des Threads, der
mit meinem Programm, einer dialogfeldbasierenden Anwendung, gestartet wird.Vielen Dank für eure Hilfe.
-
Es ist eine Linker Option.
Unter Projekt Setting -> Linker -> SystemAber warum möchtest Du das?
Zu große Objekte gehören nicht auf den Stack.
-
Ich möchte den Stack verkleinern, weil ich der Meinung bin so Arbeitsspeicher zu sparen.
Vielen Dank für deine Hilfe!
Gruß MCGH.
-
Du sparst damit keinen Arbeitsspeicher. Dem Stack wird nur ein Teil realer Speicher zugewiesen. Erst wenn der Stack wächst wird auch weiter Speciher benötigt.
Das kannst Du Dir sparen.
-
Man kann sich dadurch schon Speicher sparen! Es ist aber oft etwas gefährlich dies zu tun! Man muss schon zielich sicher sein, dass man keine Rekursionen oder grosse Lokale Variablen hat!
Wenn man z.B. sehr viele Threads erzeugt, dann macht es möglicherweise Sinn die Stack-Size zu verringern, da man sonst max. ca. 1000 Threas erzeugen kann (was IMHO natürlich auch keinen Sinn macht
).
-
Hallo MCGH,
das kann man schaffen, da gibt es ja noch mehr Katastrophen -Schalter
#pragma stacksize 4711
#pragma warning (push)
#pragma warning( disable:6001 )puts("kein stack kein warning, alles wird gut");
#pragma warning (pop)
grüße
Karsten Schulz
(wem man hier alles trifft^^)
-
Was soll dieser Quatsch es gibt kein pragma stacksize!
http://msdn2.microsoft.com/en-us/library/d9x1s805(vs.71).aspx
-
Hi,
qwatsch ist relativ, beim GNU Compiler existiert das Pragama, bei VS
nicht, das habe ich glatt mal ausprobiert.Der Körper iteriert bis eins vor absturz. Dann einfach #paragma stack
auf 1 gestellt, so müßte ein Ausnameende vorkommen, ist zum Glück anders.#define MAXITERATION 129518 #pragma stacksize 1 int nochsofleissig(void) { static int it(0); while((++it < MAXITERATION) && (6*6 == 36)) return nochsofleissig(); } int main(void) { nochsofleissig(); return 0; }grüße
Karsten Schulz
-
MFC != gnu...
=> Quatsch...Aber wir brauchen hier nicht so weiterzumachen wie in den Newsgroups... aber auf das wird es mit Dir wohl rauslaufen...
-
Wenn man mehrere Threads anlegt kann man beim Erstellen des/der Threads angeben wie gross der Stack werden soll.
Wenn man nur einen (oder wenige) Thread(s) hat kann man getrost darauf verzichten weil es dann vollkommen egal ist.