BSS段、資料區段、程式碼片段、堆棧、指標/引用

來源:互聯網
上載者:User

BSS段:在採用段式記憶體管理的架構中,BSS段(bss segment)通常是指用來存放程式中未初始化的全域變數的一塊記憶體地區。BSS是英文Block Started by Symbol的簡稱。BSS段屬於靜態記憶體配置。

資料區段:在採用段式記憶體管理的架構中,資料區段(data segment)通常是指用來存放程式中已初始化的全域變數的一塊記憶體地區。資料區段屬於靜態記憶體配置。

程式碼片段:在採用段式記憶體管理的架構中,程式碼片段(code segment / text
segment)通常是指用來存放程式執行代碼的一塊記憶體地區。這部分地區的大小在程式運行前就已經確定,並且記憶體地區通常屬於唯讀,
某些架構也允許程式碼片段為可寫,即允許自修改程式。 在程式碼片段中,也有可能包含一些唯讀常數變數,例如字串常量等。



堆棧又稱堆棧(stack)在電腦科學中,是一種特殊的鏈表形式的資料結構,它的特殊之處在於只能允許在鏈表的一端(稱為棧頂,英文為top)進行添加和刪除操作。另外堆棧資料結構的實現也可以通過數組來完成。

嚴格來說堆是指Heap,程式運行時供程式員來支配的一段記憶體。
而棧Stack,多指函數調用時候參數的相互傳遞存在的記憶體地區。

由於堆棧資料結構只允許在一端進行操作,因而按照先進後出(LIFO-Last In First Out)的原理工作。

堆棧資料結構支援兩種基本操作:壓棧(push)和彈棧(pop):

   1. 壓棧(入棧):將對象或者資料壓入棧中,更新棧頂指標,使其指向最後入棧的對象或資料。
   2. 彈棧(出棧):返回棧頂指向的對象或資料,並從棧中刪除該對象或資料,更新棧頂。

C++中引用和指標的區別
指標初始化的時候,可以指向一個地址,也可以為空白。《----》引用必須初始化為另一個變數.

 

C/C++中的指標其實就是一個變數,和其他類型的變數是一個樣子的,它是一個佔用四位元組的變數(32位機上),它與其他變數的不同之處就在於它的
變數值是一個記憶體位址,指向記憶體的另外一個地方。reference我的理解就是一個別名,它和linux作業系統上的alias是一個樣子的。再者,一
個pointer變數可以指向NULL,表示它不指向任何變數地址,但是reference必須在聲明的時候就得和一個已經存在的變數相綁定,而且這種綁
定不可改變。

 

如果是傳遞指標,那麼先複製該指標,在函數內部使用的是複製後的指標,這個指標與原來的指標指向相同的地址,如果在函數內部將複製後的指標指向了另外的新的對象,那麼不會影響原有的指標;

是對於傳遞指標引用,如果將傳遞進來的指標指向了新的對象,那麼原始的指標也就指向了新的對象,這樣就會造成記憶體流失,因為原來指標指向的地方已經不能再
引用了,即使沒有將傳遞進來的指標指向新的對象,而是在函數結束的時候釋放了指標,那麼在函數外部就不能再使用原有的指標了,因為原來的記憶體已經被釋放
了。

 

引用和指標

★ 相同點:
1. 都是地址的概念;
    指標指向一塊記憶體,它的內容是所指記憶體的地址;引用是某塊記憶體的別名。

★ 區別:
1. 指標是一個實體,而引用僅是個別名;
2. 引用使用時無需解引用(*),指標需要解引用;
3. 引用只能在定義時被初始化一次,之後不可變;指標可變;
    引用“從一而終” ^_^
4. 引用沒有 const,指標有 const,const 的指標不可變;
5. 引用不可為空,指標可以為空白;
6. “sizeof 引用”得到的是所指向的變數(對象)的大小,而“sizeof 指標”得到的是指標本身(所指向的變數或對象的地址)的大小;
    typeid(T) == typeid(T&) 恒為真,sizeof(T) == sizeof(T&) 恒為真,
    但是當引用作為成員時,其佔用空間與指標相同(沒找到標準的規定)。
7. 指標和引用的自增(++)運算意義不一樣;

★ 聯絡
1. 引用在語言內部用指標實現(如何??)。
2. 對一般應用而言,把引用理解為指標,不會犯嚴重語義錯誤。引用是操作受限了的指標(僅容許取內容操作)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.