編譯器棧設置100MB
『壹』 msp430編譯器的堆棧在哪裡設置
我用的是IAR 4.11b for MSP430,4.11裡面改堆棧是在你工程的Options裡面。首先在Workspace窗口右鍵單擊你的工程,然後選擇第一項"Options",或者選在上面菜單中選擇Project->Options也可以進入這個選項。在Options裡面第一個General Options中,有一堆選項卡,第五個選項卡(就是Library Options再向右一個)就是Stack/Heap,用來調整堆和棧的大小的。調的時候先在Override Default前面打鉤。如果你用的是地址線沒有擴展的MCU版本,則只有Stack Size 和Heap Size 兩個選項可以選擇。如果你是用的是較新的F5系列擴展地址線版本MCU,則還可以設置Data20 Heap Size.具體怎麼設要根據你的應用需求。如果你需要自己申請用來存放Data20類型的數據,就需要把Data20 Heap Size設大一點。如果存放普通的數據那麼只需要更改Stack Size和Heap Size。
Stack和Heap的區別有問題嗎?如果不清楚的話上網路輸入「堆和棧的區別」自己看吧。根據你的應用到底是堆空間要求多一些,還是棧空間要求多一些,給Stack Size和Heap Size分配不同大小的Size。
別的版本的IAR我也沒用過,有什麼問題在線交流吧。希望對你有幫助!
『貳』 編譯器可以修改棧大小,這個值可以隨意設置嗎
你說的那個默認1M的棧,應該指的是call stack(函數調用使用的棧)。這個棧用來存放函數調用時所傳遞的參數(並非所有參數都通過棧傳遞),棧指針,return address,寄存器的備份,還有每層函數的local variable。
1M大多數情況都是夠用的,如果用完可能會發生非法訪問等錯誤。可能會用完1M的情況:某個被調用的函數申請了一個很大的local variable,比如直接在棧上開個大數組之類的;還有就是遞歸調用,遞歸層數多了後很容易就用完1M。所以遞歸一般不要亂用。
『叄』 高手們來看看VS2010 中編譯器設置都是什麼意思(其實VS2008也差不多吧),誰能詳細的給說一下,萬分感謝了
這是C/C++編譯優化設置部分
第一行,啟用的優化等級,這里優化被禁止了
第二行,內聯函數,表示是否展開,還是以函數形式存在
第三行,是否啟用內部函數
使用內部函數的代碼比較快,因為它們沒有函數調用的系統開銷。但由於創建了附
加代碼,代碼尺寸可能比較大。
第四行,優化方式,速度優先還是代碼尺寸優先;通常會選擇速度優先,現在尺寸已不是問題
第五行,是否禁止在調用堆上創建框架指針,以加快函數調用;堆內存分配演算法需要時間
第六行,是否啟用纖程安全的線程本地存儲優化
第七行,是否啟用全局鏈接時代碼優化;指的是生成具體指令過程推遲到鏈接的時候,這樣有
助於具體的一些優化,比如,函數內部變數,有些可以是寄存器變數,沒必要再
棧里分配,寄存器訪問比內存訪問快很多,這些都依賴於函數的調用拓撲等關系。
『肆』 程序設計中,堆和棧比較重要。棧存取速度大於堆,而且編譯器可以修改棧大小,這個值可以隨意設置嗎
學習電腦編程多年了,在程序設計方面也算有一番見解,希望這些經驗能對題主有所幫助。
現在堆棧通常默認為8M,對吧?事實上,如果你不濫用遞歸,或者alloca / vla,大多數時候,就足夠了。即使它不超過內核限制,通常也不適合驅動大型的,或者它會影響並發進程的數量。並且過程啟動時間也應該稍微減少。當然,如果是專用的伺服器系統,問題就不嚴重了。