一般來說,我們所用的記憶體有棧和堆之分,其它的我們很少控制,棧的速度快,但是空間小、不靈活;而堆的空間幾乎可以滿足任何要求、靈活,但是相對的速度要慢了很多,並且在vc中堆是人為控制的,new了就要delete,否則很容易產生記憶體洩露等問題。
系統 棧的位元組數
bits
digits
以兆為單位的值
linux 8192k bytes <=62407 <=18786 linux預設8m
(我的好像是10m)
windows 1024k bytes <=10581 <=3185 (release version) windows預設1m
一、vc++程式
棧空間的大小
vc++預設的棧空間是1m,有兩個方法更改:
a. link時用/stack指定它的大小,或者在.def中使用stacksize指定它的大小【link選項】
b. 使用控制台命令「editbin」更改exe的棧空間大小。
方法一:stacksize 定義.def檔案
語法:stacksize reserve[,commit]
reserve:棧的大小;commit:可選項,與作業系統有關,在nt上指一次分配物理記憶體的大小
方法二:設定/stack
開啟工程,依次操作選單如下:project->setting->link,在category 中選中output,然後
在reserve中設定堆疊的最大值和commit。
注意:reserve預設值為1mb,最小值為4byte;commit是保留在虛擬記憶體的頁檔案裡面,它設定的較
大會使棧開闢較大的值,可能增加記憶體的開銷和啟動時間。
二、linux下程式
棧空間的大小
linux下非編譯器決定棧大小,而是由作業系統環境決定;而在windows平台下棧的大小是被記錄在可執行檔案中的(由編譯器來設定),即:
windows下可以由編譯器決定棧大小,而在linux下是由系統環境變數來控制棧的大小的。
在linux下通過如下命令可檢視和設定棧的大小:
命令: ulimit -a # 顯示當前棧的大小 (ulimit為系統命令,非編譯器命令)
命令: ulimit -s 32768 # 設定當前棧的大小為32m bytes
Linux中程式編譯
arm linux gnueabihf gcc eg arm linux gnueabihf gcc g c led.s o led.o g選項是產生除錯資訊,gdb除錯能夠利用這些資訊進行除錯 c選項是編譯原始檔,但是不產生連線 o是指定編譯產生的檔案名字,即指定編譯後產生led.o檔案arm l...
Linux中程式的執行原理
linux中程式的執行原理 在linux的開發環境中,c語言程式的執行環境如圖1 3所示。作為unix作業系統的一種,linux的作業系統提供了一系列的介面,這些介面被稱為系統呼叫 system call 在unix的理念中,系統呼叫 提供的是機制,而不是策略 c語言的庫函式通過呼叫系統呼叫來實現,...
Linux中程式後台執行命令
1.讓命令後台執行 2.輸出重定向 3.2 1 將標準出錯重定向到標準輸出 4.nohup 退出終端後,程式依然後台執行 5.jobs 檢視後台執行的程序 6.fg 把後台執行的命令 7.ctrl z 暫停某個程序 8.bg 繼續執行後台暫停的程序 9.kill 終止程序 python 列印1 30...