欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • C/C++的文件IO函數(shù)你知道嗎

    C/C++的文件IO函數(shù)你知道嗎

    這篇文章主要為大家詳細介紹了C/C++的文件IO函數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++中的std::nothrow使用

    C++中的std::nothrow使用

    這篇文章主要介紹了C++中的std::nothrow使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 將?C++?類型屬性暴露給?QML

    將?C++?類型屬性暴露給?QML

    這篇文章主要介紹了將?C++?類型屬性暴露給?QML,?QML?是一種基于?JavaScript?的聲明式語言。在?Qt5中,QML有了長足進步,并且同?C++?并列成為?Qt?的首選編程語言下面一起進入文章學習?QML的條件下也看看如何將將?C++?類型屬性暴露給?QML,需要的朋友可以參考一下
    2021-12-12
  • Visual Studio 2019 Professional 激活方法詳解

    Visual Studio 2019 Professional 激活方法詳解

    這篇文章主要介紹了Visual Studio 2019 Professional 激活方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • C++ new與malloc和delete及free動態(tài)內(nèi)存管理及區(qū)別介紹

    C++ new與malloc和delete及free動態(tài)內(nèi)存管理及區(qū)別介紹

    這篇文章主要介紹了深入理解C++中的new/delete和malloc/free動態(tài)內(nèi)存管理,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • C++實現(xiàn)馬踏棋盤(騎士周游)

    C++實現(xiàn)馬踏棋盤(騎士周游)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)馬踏棋盤,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C++begin和end運算符的返回迭代器的類型如何判斷?

    C++begin和end運算符的返回迭代器的類型如何判斷?

    今天小編就為大家分享一篇關(guān)于C++begin和end運算符的返回迭代器的類型如何判斷?,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • opencv利用矩形框選中某一區(qū)域并保存為新圖片

    opencv利用矩形框選中某一區(qū)域并保存為新圖片

    這篇文章主要為大家詳細介紹了opencv利用矩形框選中某一區(qū)域并保存為新圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C++刪除指定文件夾下N天及之前日志文件的方法

    C++刪除指定文件夾下N天及之前日志文件的方法

    這篇文章主要介紹了C++刪除指定文件夾下N天及之前日志文件的方法,涉及C++針對時間判斷及文件操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • 一篇文章讓你徹底明白c++11增加的變參數(shù)模板

    一篇文章讓你徹底明白c++11增加的變參數(shù)模板

    C++11的新特性--可變模版參數(shù)(variadic templates)是C++11新增的最強大的特性之一,它對參數(shù)進行了高度泛化,它能表示0到任意個數(shù)、任意類型的參數(shù),這篇文章主要給大家詳細介紹了關(guān)于c++11增加的變參數(shù)模板的相關(guān)資料,需要的朋友可以參考下
    2021-08-08

最新評論