1. 程式人生 > >變數,常量,靜態變數儲存的位置

變數,常量,靜態變數儲存的位置

常見的儲存區域可分為:

1、棧

由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數、函式引數等。

2、堆

由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般一個new就要對應一個delete。如果程式設計師沒有釋放掉,程式會一直佔用記憶體,導致記憶體洩漏,在程式結束後,作業系統會自動回收。

3、自由儲存區

由malloc等分配的記憶體塊,它和堆是十分相似的,不過它是用free來釋放分配的記憶體。

4、全域性/靜態儲存區

全域性變數和靜態變數被分配到同一塊記憶體中,在以前的C語言中,全域性變數又分為初始化的和未初始化的,在C++裡面沒有這個區分了,他們共同佔用同一塊記憶體區。

5、常量儲存區

這是一塊比較特殊的儲存區,他們裡面存放的是常量,不允許修改(當然,你要通過非正當手段也可以修改)。

例1:C語言程式

  1. int x;  
  2. void main()  
  3. {  
  4. }  

變數x儲存在記憶體哪個區域?

答:在採用段式記憶體管理的架構中,BSS段(bss segment)通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域。

BSS是英文Block Started by Symbol的簡稱。BSS段屬於靜態儲存區

例2:static全域性變數與普通全域性變數有什麼區別?

答:static全域性變數和普通全域性變數儲存區域相同,不同的是:

static全域性變數只在宣告此static全域性變數的檔案中有效;

普通全域性變數對整個源程式都有效,當此源程式包含多於一個檔案的程式時,對其他檔案依然有效。

例3:static區域性變數與普通區域性變數的區別?

答:static區域性變數的儲存區為靜態儲存區,普通區域性變數的儲存區為棧;

static區域性變數生存週期為整個源程式,但是隻能在宣告其的函式中呼叫,並且其值與上一次的結果有關;而普通區域性變數的生存週期為宣告其函式的週期,超過特定的範圍其值會被重新初始化;

static區域性變數如果未初始化其值預設為0,而普通區域性變數則不確定。

轉載自http://blog.csdn.net/xl890727/article/details/12657073

相關推薦

變數常量靜態變數儲存位置

常見的儲存區域可分為: 1、棧 由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數、函式引數等。 2、堆 由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般一個new就要對應一個delete。如果程

Java儲存機制——棧、堆區別(變數常量String舉例)

Java的6種儲存儲存地址及其解釋   暫存器(register):這是最快的儲存區,因為它位於不同於其他儲存區的地方——處理器內部。但是暫存器數量極其有限,所以暫存器根據編譯器需求來進行分配,我們無法控制。 堆疊(常稱為棧:stack):位於通用RAM中。它通過它的“

三:go語言變數常量列舉布林

1:一個包下面可以有多個人原始檔 2:import按照書序匯入載入(優先執行檔案裡的init方法) 3:類型別名不能參加正常運算(要同一個型別的前提下才行) 4:申明的變數沒有使用,也會報錯 5:定義包名 -> 最好資料夾唯獨定義包名 6:var a,b,c = 11,21,31

php變數常量常用運算子

  1.變數 •變數不需指定資料型別(弱型別) •變數名必須以$開頭 •命名規則:由英文字母、數字、下劃線組合,不能數字開頭 •對大小寫敏感 $name='張三';//直接使用變數,沒有指定資料型別 $age='20'; echo $name;//輸出變數的值 e

Java中變數常量關鍵字和識別符號

Java語言基礎 識別符號的含義: 可以理解為有關名字,用來標識類名、變數名、方法名、陣列名、檔名的有序字元序列。 Java中的識別符號: 由任意的字母、下劃線、美元符號和數字組成,並且第一個字元不能是數字,識別符號不能是Java中的保留關鍵字。 注意:Java中嚴格區分

JAVA基礎----變數常量運算子

一:資料型別 java資料型別分為簡單型別和引用型別。 以下為資料型別分類: 二:裝箱和拆箱 1.byte:初始值:0 包裝類:Byte; char:初始值:\u0000 包裝類:Character short:初始值:0 包裝類:Character int:初始值:0 包裝類:Integ

關鍵字識別符號註釋常量進位制轉換變數

關鍵字 被Java語言賦予特定含義的單詞。 特點: 組成關鍵字的字母全部小寫。 注意事項: A:goto和const作為保留字存在,目前並不使用。注意:保留字在jdk的新版本中可能會提升為關鍵字。 B:類似於Notepad++這樣的高階記事本會對關鍵字有特殊顏色標記。 例項程式碼

Python學習之旅_01day:變數常量變數輸入縮排if條件記憶體回收機制

1.變數和常量1.1 變數是為了儲存程式運算過程中的一些中間結果,為了方便日後呼叫1.2 變數存在一定的描述性,讓大眾一看就知道該變數的用途 1.3書寫方式 變數的命名規則 1. 要具有描述性 2. 變數名只能_,數字,字母組成,不可以是空格或特殊字元(#?<.,¥$*!~) 3. 不能以中文為變數名

當一個類被載入後它的靜態變數生命週期是什麼是整個應用程式執行結束(比如java web程式從類載入到伺服器關閉還是該執行緒執行完畢)還是別的什麼?

靜態變數在記憶體中只有一個,JAVA虛擬機器載入類的時候為其分配記憶體,位於方法區,被類的所有例項共享,其生命週期取決於類的生命週期。。。當類被解除安裝。。。靜態變數也被銷燬 取決於類載入器。如果換了一個類載入器,這個

1.4 開始第一幅“碼繪”——活用變數常量實現滑鼠互動

引言——如何在程式中改變繪製內容 回顧之前畫懵逼臉的程式碼,可以看出,每個語句中都是直接用數值精確指定橢圓/直線/色彩: 1 2 3 4 5 6 7 8 9 10

spring 框架載入靜態變數配置; 初始化靜態變數, 載入配置檔案

1:普通變數的屬性變數載入  import java.io.InputStream; import java.util.Properties; import org.apache.commons.lang.StringUtils; import org.slf4j.Log

關鍵字識別符號常量變數型別轉換

關鍵字: JAVA預定義的單詞,簡而言之,有特殊含義的單詞,能夠使得開發工具變顏色的單詞。 關鍵字的特點: 1.所有字母都是小寫組成。 2.關鍵字不能夠作為識別符號。 3.java中一共有50個關鍵字,注意 const goto也是關鍵字。 const goto在java中沒有特

Java基礎語法(一)(識別符號關鍵字註釋常量變數基本資料型別)

1.識別符號 Java中識別符號就是給程式中的變數,類,方法名命名的符號。     規則:1.可以又字母、數字、下劃線(_)和美元符號($)組成,但是                2.不能是java

黑馬程式設計師————c語言基本知識——資料識別符號常量變數printf scanf等基本知識

分類:ios學習筆記 一.資料型別:   1.基本型別(整型、字元型、浮點型、列舉型別),   2.構造型別(陣列型別,結構體型別,共用體型別),   3.指標型別,   4.空型別 二.標示符:  只能由字母、數字或下劃線組成。且第一個不能為數字,不能為C 語言所

利用vgg預訓練的情況下已下載的權重儲存位置

在做深度學習實驗的時候,踩了很多坑。尤其是資料的載入,以及所下載權重,不知道存放在何處,導致載入模型時候,還是會從網上下載,不是遇到下載到一半因為網路原因中斷,就是下載時間太長。雖然網上說的特簡單,但在實際當中,因為對Linux命令不熟悉,還是摸索了好久。以下為

Java中靜態常量靜態變數的區別

如下:測試java中靜態常量和靜態變數區別的樣例,表明兩者載入時的區別。StaticClass類中定義了靜態常量FIANL_VALUE和靜態變數VALUE,靜態程式碼塊的列印語句表示類被載入:publi

SpringBoot 自定義filter 和 interceptor自定義靜態檔案存放位置

上篇分享我們已經有了一個最基礎具有登陸驗證功能 的SpringBoot web專案,本篇對照之前SpringMVC 的xml配置,闡述SpringBoot 中的filter 和 interceptor。 一、web.xml中的filter 和 SpringBo

01.Java關鍵字常量變量數值類型

ati 標識 類繼承 大寫 起名字 運行 native 顯示錯誤 第一個 2.1.關鍵字 1.用於定義訪問權限修飾符的關鍵字:private ,protected ,public 1)private (私有的): private 關鍵字是訪問控制修飾符,可以應用於類、方法

全域性變數、類靜態變數及函式區域性靜態變數的初始化順序

What is the lifetime of class static variables in C++? First the list of possibilities. Namespace Static Class Static Local Static

go的變數常量以及判斷變數的資料型別

1.定義變數 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } span.s1 { font: 12.0px ".PingFang SC" } var 變數名 型別 =value