天天看點

vc6 設定堆棧大小

vc6 設定堆棧大小

First-chance exception in platform.exe: 0xC00000FD: Stack Overflow.

please enter the path for CHKSTK.ASM.   AfxWinMain

解決方法:

在調試程式時,VC下經常要用到Step Over和Step Into,對于庫函數,一般都知道使用Step Over,對于自定義函數,要使用Step Into。但是有時會出現如下提示:please enter the path for CHKSTK.ASM(check stack)。這是由于在VC調試過程中,配置設定的堆棧空間不夠引起的。

我們知道,C中的參數傳遞是傳值的,如果傳遞是一個結構體,而且該結構體内含有大量的數組空間時,很容易引起記憶體溢出,進而導緻錯誤。解決方法有兩個:

1.減少函數傳遞的參數的個數和大小,少使用記憶體空間。

2.在VC++下,盡量使用引用傳遞,進而減少參數傳遞占用的堆棧空間。

3.修改VC的配置。方法如下:

Project → Setting →Link 
 将 Category 選項改成 Output 
 可以看到有一個 Stack Allocations 當中 
Reserve → virtual memory 
 Commit → physical memory 
Default 的 stack size 是 1MB 
 最大值為 0xffffffff (4,294,967,295) 
 或是可以在 compiler 完後.. 
 在 command mode 下 
 下參數 /Fnumber , number 即 set stack size .. 
 number可以用十進位表示, 機關是 bytes      

繼續閱讀