1. 程式人生 > >VC++ 6.0 中修改預設棧空間大小的方法

VC++ 6.0 中修改預設棧空間大小的方法

    之前用VC++ 6.0編寫程式進行較大規模的陣列處理時,經常會遇到棧空間溢位(stack overflow)的問題,有時會彈出WINDOWS的警告,某記憶體不能read。如果新手想不到錯誤的原因是因為棧溢位的話,除錯起來會非常頭痛。

    我最近在對文字檔案中的100多萬行的浮點數進行按大小排序,首先想到的必然是用快速排序演算法,快排利用到了遞迴的方法,遞迴方法會用到棧這個資料結構。VC++6.0中預設的棧空間大小是1M,我在執行程式時,把結果輸出到一個文字檔案中,但異常的是,程式並沒有向檔案中寫任何東西。回頭檢查時,發現程式在遞迴的過程中出現異常。

    首先想到的出錯原因是資料量太大,故多隻取前三百行進行排序,結果正常輸出。然後逐漸增加行數,當增加到70000行時,程式便不能正常輸出了。這是典型的棧空間不夠用的例子,現將棧空間修改的方法說明。在”工程“選單中,選擇”設定“,然後選擇”連線“選項卡,在”分類“下拉選單中,選擇”輸出“,然後在”堆疊分配“框中輸入一個較大的數目,此框中的數目是按位元組計算的,1M約等於1000000位元組,然後可根據自己的實際需要相應的修改即可。