最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中的內(nèi)存分區(qū)介紹

 更新時(shí)間:2015年07月08日 10:49:37   投稿:junjie  
這篇文章主要介紹了C++中的內(nèi)存分區(qū)介紹,C++的內(nèi)存劃分為棧區(qū)、堆區(qū)、全局區(qū)/靜態(tài)區(qū)、字符串常量和代碼區(qū),本文分別對(duì)他們一一說明,需要的朋友可以參考下

C++的內(nèi)存劃分為棧區(qū)、堆區(qū)、全局區(qū)/靜態(tài)區(qū)、字符串常量和代碼區(qū)。

這里去掉自由存儲(chǔ)區(qū),增加了代碼區(qū),理由會(huì)在下面講到。

棧區(qū):由系統(tǒng)進(jìn)行內(nèi)存的管理。

說明:主要存放函數(shù)的參數(shù)以及局部變量。棧區(qū)由系統(tǒng)進(jìn)行內(nèi)存管理,在函數(shù)完成執(zhí)行,系統(tǒng)自行釋放棧區(qū)內(nèi)存,不需要用戶管理。整個(gè)程序的棧區(qū)的大小可以在編譯器中由用戶自行設(shè)定,默認(rèn)的棧區(qū)大小為3M。

全局/靜態(tài)區(qū):全局、靜態(tài)數(shù)據(jù)存放在一起的,初始化的全局變量和靜態(tài)變量是在一起的。未初始化的全局變量和靜態(tài)變量是在相鄰的空間中。

說明:全局變量和靜態(tài)全局變量的存儲(chǔ)方式是一致的,但是其區(qū)別在于,全局變量在整個(gè)源代碼中都可以使用,而靜態(tài)全局變量只能在當(dāng)前文件中有效。比如我們的一個(gè)程序有5個(gè)文件,那么某個(gè)文件中申請(qǐng)了靜態(tài)全局變量,這個(gè)靜態(tài)全局變量只能在當(dāng)前文件中使用,其他四個(gè)文件均不可以使用。而某個(gè)文件中申請(qǐng)了全局變量,那么其他四個(gè)文件中都可以使用該全局變量(只需要通過關(guān)鍵字extern申明一下就可以使用了)。事實(shí)上static改變了變量的作用范圍。

字符串常量區(qū):存放字符串常量,程序結(jié)束后,由系統(tǒng)進(jìn)行釋放。比如我們定義char * p = “Hello World”; 這里的“Hello World”就是在字符串常量中,最終系統(tǒng)會(huì)自動(dòng)釋放。

代碼區(qū):存放程序體的二進(jìn)制代碼。比如我們寫的函數(shù),都是在代碼區(qū)的。

堆區(qū):由用戶手動(dòng)申請(qǐng),手動(dòng)釋放。在C中使用malloc,在C++中使用new(當(dāng)然C++中也可以使用malloc)。

說明:new操作符本質(zhì)上還是使用了malloc進(jìn)行內(nèi)存的申請(qǐng),因此我將自由存儲(chǔ)區(qū)和堆區(qū)都說成堆區(qū),不過兩者還是有很大的差別。

1)malloc是C語(yǔ)言中的函數(shù),而new是C++中的操作符。

2)malloc申請(qǐng)之后返回的類型是VOID*,而new返回的指針帶有類型。

3)malloc只負(fù)責(zé)內(nèi)存的分配而不會(huì)調(diào)用類的構(gòu)造函數(shù),而new不僅會(huì)分配內(nèi)存,而且會(huì)自動(dòng)調(diào)用類的構(gòu)造函數(shù)。

相關(guān)文章

  • C++超詳細(xì)分析順序表

    C++超詳細(xì)分析順序表

    程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要?jiǎng)?chuàng)建這種元素組,用變量記錄它們,傳進(jìn)傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個(gè)數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲(chǔ)區(qū)里,元素間的順序關(guān)系由它們的存儲(chǔ)順序自然表示
    2022-03-03
  • C++?右值引用與?const?關(guān)鍵字詳解

    C++?右值引用與?const?關(guān)鍵字詳解

    C++中的const關(guān)鍵字的用法非常靈活,而使用const將大大改善程序的健壯性,const關(guān)鍵字是一種修飾符,這篇文章主要介紹了C++?右值引用與?const?關(guān)鍵字,需要的朋友可以參考下
    2022-10-10
  • 適合初學(xué)者練習(xí)的C語(yǔ)言實(shí)現(xiàn)三子棋小游戲

    適合初學(xué)者練習(xí)的C語(yǔ)言實(shí)現(xiàn)三子棋小游戲

    今天這篇文章主要介紹給大家分享一個(gè)適合初學(xué)者練習(xí)的利用C語(yǔ)言寫三子棋小游戲,用簡(jiǎn)單的C語(yǔ)言來(lái)實(shí)現(xiàn)小時(shí)候玩的三子棋游戲,下面是人機(jī)對(duì)戰(zhàn),當(dāng)然這個(gè)代碼的電腦對(duì)手是人工智障而不是人工智能 詳細(xì)內(nèi)容就請(qǐng)跟小編一起來(lái)閱讀下面文章內(nèi)容吧
    2021-10-10
  • C++實(shí)現(xiàn)獲取系統(tǒng)時(shí)間的方法小結(jié)

    C++實(shí)現(xiàn)獲取系統(tǒng)時(shí)間的方法小結(jié)

    這篇文章主要為大家詳細(xì)介紹了使用C++實(shí)現(xiàn)獲取系統(tǒng)時(shí)間的一些常用方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下
    2024-03-03
  • Qt Design Studio安裝圖文教程

    Qt Design Studio安裝圖文教程

    本文主要介紹了Qt Design Studio安裝圖文教程,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 使用C++實(shí)現(xiàn)監(jiān)控文件是否被修改

    使用C++實(shí)現(xiàn)監(jiān)控文件是否被修改

    軟件開發(fā)過程中經(jīng)常會(huì)用到配置文件,某些應(yīng)用場(chǎng)景要求在軟件運(yùn)行時(shí)動(dòng)態(tài)修改配置文件,此時(shí)就需要監(jiān)控配置文件是否被修改,下面我們就來(lái)看看如何使用C++實(shí)現(xiàn)這一功能吧
    2024-02-02
  • c++回溯法解決1到9之間插入加減或空使運(yùn)算結(jié)果為100

    c++回溯法解決1到9之間插入加減或空使運(yùn)算結(jié)果為100

    編寫一個(gè)在1,2,…,9(順序不能變)數(shù)字之間插入+或-或什么都不插入,使得計(jì)算結(jié)果總是100的程序,并輸出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100
    2021-10-10
  • MFC程序執(zhí)行過程深入剖析

    MFC程序執(zhí)行過程深入剖析

    這篇文章主要介紹了MFC程序執(zhí)行過程,包括對(duì)MFC執(zhí)行流程的分析以及斷點(diǎn)調(diào)試分析出的SDI程序執(zhí)行流程,需要的朋友可以參考下
    2014-09-09
  • C++17文件系統(tǒng)庫(kù)之std::filesystem 示例詳解

    C++17文件系統(tǒng)庫(kù)之std::filesystem 示例詳解

    std::filesystem是C++17引入的一個(gè)強(qiáng)大且易用的文件系統(tǒng)操作庫(kù),它提供了跨平臺(tái)的文件系統(tǒng)操作接口,簡(jiǎn)化了文件和目錄操作的代碼實(shí)現(xiàn),本文給大家介紹C++17文件系統(tǒng)庫(kù)之std::filesystem 示例詳解,感興趣的朋友一起看看吧
    2025-03-03
  • C++ 泛型編程詳解

    C++ 泛型編程詳解

    這一篇介紹一下 C++ 編程中與面向?qū)ο蟛⒘械牧硪淮蠓种А盒途幊?,這一篇主要介紹函數(shù)模板、類模板和成員模板三大部分,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

灵台县| 和平区| 宜川县| 肃宁县| 安泽县| 喀什市| 开封县| 克拉玛依市| 邵阳市| 南召县| 调兵山市| 镇巴县| 康平县| 松潘县| 怀集县| 壤塘县| 松桃| 临沧市| 沁源县| 包头市| 龙游县| 哈巴河县| 闸北区| 盐山县| 平定县| 稻城县| 晋州市| 登封市| 乳山市| 家居| 绵竹市| 东辽县| 遵义县| 景东| 墨脱县| 轮台县| 泾阳县| 青岛市| 黔东| 广饶县| 丹阳市|