Czy istnieje sposób na zwiększenie rozmiaru stosu aplikacji systemu Windows w czasie kompilacji/łączenia z GCC?Zwiększ rozmiar stosu w systemie Windows (GCC)
Odpowiedz
Można uruchomić edytor po zakończeniu łączenia.
Zdecydowanie mógłbym - i wydaje się to być tym, co nieuchronnie muszę zrobić - ale szukałem sposobu, aby to zrobić w czasie łącza. W każdym razie dzięki. – Landon
Podczas tworzenia wątków używasz dwStackSize paremater, ale nie jestem pewien jak zmienić rozmiar głównego wątku, to wskazuje to w nagłówku exe, więc może to być opcja dla kompilatora/linkera, inaczej musisz znaleźć odpowiednią część nagłówka i zmienić ją samodzielnie.
http://msdn.microsoft.com/en-us/library/ms686774(VS.85).aspx
IIRC, W GCC można dostarczyć --stack, [bajty] parametru LD.
E.g.
gcc -Wl,--stack,16777216 -o file.exe file.c
Aby mieć stos 16 MB, myślę, że domyślny rozmiar to 8 MB.
Tego właśnie szukałem. Niestety, nie miałem szczęścia w tym systemie Windows. Czy ty? – Landon
+1 To rzeczywiście działa, gdy próbowałem go na gcc 4.5.2. Bez tego przełącznika skompilowane programy rozpoczynają segfaulting ze statycznymi rozmiarami macierzy ~ 500k. Po zastosowaniu tego przełącznika udało mi się zwiększyć rozmiar do 3 milionów elementów bez żadnych incydentów. – greatwolf
Istnieją dwa rozmiary stosów w systemie Windows. Pierwotnie zatwierdzony rozmiar i całkowity zarezerwowany rozmiar. Możesz ustawić oba z instrukcją STACKSIZE w pliku .def.
Czy ktoś może mi wyjaśnić, co oznacza zwiększenie rozmiaru stosu? Ramka stosu jest częścią zajmowaną przez funkcję na stosie. i stos jest ustalany przez system operacyjny, prawda? W czym pomaga 'editbin'? Jestem zmieszany! – claws