2008-10-01 260 views
9

有沒有辦法在編譯/鏈接時使用GCC增加Windows應用程序的堆棧大小?在Windows上增加堆棧大小(GCC)

+0

任何人都可以解釋我增加堆棧的大小是什麼意思?堆棧幀的一部分被堆棧上的功能佔用。而堆棧是由操作系統決定的嗎? `editbin`如何幫助它?我很困惑! – claws 2010-08-04 19:27:20

回答

6

你可以在鏈接後運行editbin。

+0

我絕對可以 - 而且這似乎是我不可避免要做的 - 但我正在尋找一種方式在鏈接時做到這一點。不過謝謝。 – Landon 2008-10-02 00:56:23

0

在創建線程時使用dwStackSize paremater,但我不確定如何更改主線程的大小,這表明它在exe的頭文件中,所以它可能是編譯器/鏈接器的選項,否則您需要找到標題的相關部分並自行更改。

http://msdn.microsoft.com/en-us/library/ms686774(VS.85).aspx

17

IIRC,在GCC可以提供--stack,[字節]參數給ld。

例如

gcc -Wl,--stack,16777216 -o file.exe file.c 

要有一堆16MiB,我認爲默認大小是8MiB。

+0

這是我最初尋找的。不幸的是,我在Windows上沒有任何運氣。你有嗎? – Landon 2008-10-02 00:56:55

2

Windows中有兩種堆棧大小。最初提交的大小和總預留大小。您可以在.def文件中設置STACKSIZE語句。