導航:首頁 > 源碼編譯 > 編譯器是如何管理變數的

編譯器是如何管理變數的

發布時間:2023-04-14 18:57:50

A. C語言中已經聲明或定義的變數如果在代碼中沒有使用到,編譯器會怎樣處理

就一直在那裡放著。如果是全局變數,編譯器連提示都沒有;若是局部變數編譯器在編譯時會提醒說某某局部變數沒有使用;若你不理會,在代碼修改前就不會再提醒了。這些變數未使用,卻一直佔用著內存空間,但不影響代碼的正確性……

B. 問一下各位,c語言編譯器是如何處理變數名的呢

編譯器編譯到int a;時就在內存中開辟一個兩位元組的內存空間,並且命名為a

C. C 編譯器對數組是如何處理的

我記得是在棧區連續分配數組大小的內存

D. 編譯器的邏輯階段可以怎樣分組

編譯器的邏輯階段通常可以分為以下幾個部分:

E. 我們經常看到書上面說的 某某變數的內存單元是編譯器在編譯時候分配的 是什麼意思

所謂在編譯期間分配空間指的是靜態分配空間(相對於用new動態申請空間),如全局變數或靜態變數(包括一些復雜類型的常量),它們所需要的空間大小可以

明確計算出來,並且不會再改變,因此它們可以直接存放在可執行文件的特定的節里(而且包含初始化的值),程序運行時也是直接將這個節載入到特定的段中,不
必在程序運行期間用額外的代碼來產生這些變數。
其實在運行期間再看「變數」這個概念就不再具備編譯期間那麼多的屬性了(諸如名稱,類型,作用
域,生存期等等),對應的只是一塊內存(只有首址和大小),
所以在運行期間動態申請的空間,是需要額外的代碼維護,以確保不同變數不會混用內存。比如寫new表示有一塊內存已經被佔用了,其它變數就不能再用它了;
寫delete表示這塊內存自由了,可以被其它變數使用了。(通常我們都是通過變數來使用內存的,就編碼而言變數是給內存塊起了個名字,用以區分彼此)
內存申請和釋放時機很重要,過早會丟失數據,過遲會耗費內存。特定情況下編譯器可以幫我們完成這項復雜的工作(增加額外的代碼維護內存空間,實
現申請和釋 放)。從這個意義上講,局部自動變數也是由編譯器負責分配空間的。進一步講,內存管理用到了我們常常掛在嘴邊的堆和棧這兩種數據結構。
最後對於「編譯器分配空間」這種不嚴謹的說法,你可以理解成編譯期間它為你規劃好了這些變數的內存使用方案,這個方案寫到可執行文件裡面了(該文件中包含若干並非出自你大腦衍生的代碼),直到程序運行時才真正拿出來執行。

F. 編譯器在編譯的時候做了什麼給申明的變數分配內存

第一是將java文件編譯成位元組碼文件
就是class文件
給jvm執行
第二就是分配常量池
就是給你代碼裡面的變數和方法分配空間

G. 編譯器編譯高級語言為低級語言的時候,給全局變數或靜態變數是如何分配內存的

對於C和C++的編譯器,全局變數和靜態變數都是在專門的數據區保存的,更具體一點,一般是在.data和.bss段保存的,具體在哪個段,編譯器會根據代碼中是否對這些變數進行了初始化來決定,如果初始化過,並且初始化的值不為0,那麼這個這個變數一般就會被放在編譯結果的.data段中,否則就是放在.bss段中。
.data段中就保存變數的符號,還保存變數的初始化值,而在.bss段中,只保存變數的符號,而不保存值,這是因為這部分的變數都將被初始化為0,這也是為什麼static聲明的變數即使沒有初始化也會是0的原因。
這些段都會在程序被執行的時候由操作系統(或鏈接器)載入到指定的內存中,便完成相應的初始化。

H. 編譯器對作為局部變數的數組是怎麼管理的放在堆棧中

C語言的堆跟棧是有區別的,請大家不要混淆。
局部變數和函數調用時的實參是放在棧里。所以有大家常說函數調用時的入棧,出桟這個說話。
動態申請的內存放在堆里的。
全局變數和靜態變數是放在另外的全局內存區。

I. c語言怎樣銷毀變數

你好,變數的內存分配和銷毀是由編譯器自動管理的,全局變數在程序結束時銷毀,局部變數在花括弧的最後自動銷毀,不能手動銷毀哦
要實現你說的這個功能,不必銷毀ch變數,可以採用樓上說的強制轉換,也可以再申請一個變褲察量把ch值賦給int(推薦),也可以建立一個union類型,聲明一個union{int i, char ch}newType; 這樣就能隨時變化類型,但是結構較復伍悉雜,胡橘茄不推薦
希望能幫到你哦

J. 編譯器在編譯的時候做了什麼給申明的變數分配內存

第一是將java文件編譯成位元組碼文件 就是class文件 給jvm執行
第二就是分配常量池 就是給你代碼裡面的變數和方法分配空間

閱讀全文

與編譯器是如何管理變數的相關的資料

熱點內容
怎麼使用access的命令按鈕 瀏覽:897
有點錢app在哪裡下載 瀏覽:832
博途v15解壓後無法安裝 瀏覽:203
什麼是根伺服器主機 瀏覽:436
安卓手游怎麼申請退款 瀏覽:553
安卓系統如何分享網頁 瀏覽:278
ad如何編譯pcb工程 瀏覽:412
除了滴滴app哪裡還能用滴滴 瀏覽:399
截圖怎麼保存文件夾然後壓縮 瀏覽:8
幻影伺服器怎麼樣 瀏覽:27
具體哪些廣東公司招程序員 瀏覽:870
嵌入式編譯器教程 瀏覽:306
ssl數據加密傳輸 瀏覽:86
51單片機定時器方式2 瀏覽:331
命令行查看開機時間 瀏覽:813
python微博復雜網路分析 瀏覽:550
rf3148編程器 瀏覽:505
浙江標准網路伺服器機櫃雲主機 瀏覽:589
設置網路的伺服器地址 瀏覽:600
java圖形界面設計 瀏覽:751