2008-10-01 23 views
9

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)

+0

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

Odpowiedz

6

Można uruchomić edytor po zakończeniu łączenia.

+0

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

0

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

17

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.

+0

Tego właśnie szukałem. Niestety, nie miałem szczęścia w tym systemie Windows. Czy ty? – Landon

+1

+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

2

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.