国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C/C++中的內存區域劃分

汽車玩家 ? 來源:黑馬程序員 ? 作者:黑馬程序員 ? 2020-05-05 18:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 代碼區

存放 CPU 執行的機器指令。通常代碼區是可共享的(即另外的執行程序可以調用它),使其可共享的目的是對于頻繁被執行的程序,只需要在內存中有一份代碼即可。代碼區通常是只讀的,使其只讀的原因是防止程序意外地修改了它的指令。另外,代碼區還規劃了局部變量的相關信息。

總結:你所寫的所有代碼都會放入到代碼區中,代碼區的特點是共享和只讀。

2 全局區

全局區中主要存放的數據有:全局變量、靜態變量、常量(如字符串常量)

全局區的叫法有很多:全局區、靜態區、數據區、全局靜態區、靜態全局區

這部分可以細分為data區和bss區

2.1 data區

data區里主要存放的是已經初始化的全局變量、靜態變量和常量

2.2 bss區

bss區主要存放的是未初始化的全局變量、靜態變量,這些未初始化的數據在程序執行前會自動被系統初始化為0或者NULL

2.3 常量區

常量區是全局區中劃分的一個小區域,里面存放的是常量,如const修飾的全局變量、字符串常量等

在VS下運行結果如下:

C/C++中的內存區域劃分

C/C++中的內存區域劃分

C/C++中的內存區域劃分

總結:全局區存放的是全局變量、靜態變量和常量

在程序運行后由產生了兩個區域,棧區和堆區

3 棧區(stack)

棧是一種先進后出的內存結構,由編譯器自動分配釋放,存放函數的參數值、返回值、局部變量等。在程序運行過程中實時加載和釋放,因此,局部變量的生存周期為申請到釋放該段棧空間。

vs運行效果如下

C/C++中的內存區域劃分

C/C++中的內存區域劃分

4 堆區(heap)

堆是一個大容器,它的容量要遠遠大于棧,但沒有棧那樣先進后出的順序。用于動態內存分配。堆在內存中位于BSS區和棧區之間。一般由程序員分配和釋放,若程序員不釋放,程序結束時由操作系統回收。

vs運行效果如下:

C/C++中的內存區域劃分

C/C++中的內存區域劃分

當我們把幾個案例放在一起執行,就可以看到內存將每個區域劃分的很有條理。每個區域互不干涉,區域中的數據地址也是非常接近的

C/C++中的內存區域劃分

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11279

    瀏覽量

    224995
  • 內存
    +關注

    關注

    9

    文章

    3210

    瀏覽量

    76373
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    keil實現cc++混合編程

    起因項目中使用到一個開源的模擬IIC的庫,封裝的比較好,但是是使用c++寫的。于是將其移植到自己的項目中,主要有以下三步操作: 在工程選項 C/C++中去掉勾選
    發表于 01-26 08:58

    keilc語言的動態分配內存

    C程序,通常將內存劃分為以下六個區域: (1)內核區域。這塊
    發表于 01-21 06:04

    C語言與C++的區別及聯系

    缺點:性能比面向過程低。 二、具體語言上的區別 1、關鍵字的不同 C語言有32個關鍵字;C++有63個關鍵字。 2、后綴名不同 C源文件后綴.c
    發表于 12-24 07:23

    CC++之間的聯系

    1、語法兼容性: C++完全兼容C語言的語法,這意味著任何有效的C語言程序都可以直接在C++編譯器下編譯通過。 2、底層控制: C++
    發表于 12-11 06:51

    C語言和C++之間的區別是什么

    區別 1、面向對象編程 (OOP): C語言是一種面向過程的語言,它強調的是通過函數將任務分解為一系列步驟進行執行。 C++C語言的基礎上擴展了面向對象的特性,支持類(class)、封裝、繼承
    發表于 12-11 06:23

    C/C++條件編譯

    條件編譯是一種在編譯時根據條件選擇性地包含或排除部分代碼的處理方法。在 C/C++ ,條件編譯使用預處理指令 #ifdef、#endif、#else 和 #elif 來實現。常用的條件編譯指令有
    發表于 12-05 06:21

    C++程序異常的處理機制

    1、什么是異常處理? 有經驗的朋友應該知道,在正常的CC++編程過程難免會碰到程序不按照原本設計運行的情況。 最常見的有除法分母為零,數組越界,內存分配失效、打開相應文件失敗等等
    發表于 12-02 07:12

    嵌入式C/C++回歸測試四大最佳實踐(附自動化測試工具TESSY使用教程)

    嵌入式開發,一次微小的代碼改動都可能引發“蝴蝶效應”,如何守護系統的穩健?推薦專業的自動化測試工具#TESSY,源自戴姆勒-奔馳,是嵌入式C/C++單元/集成測試的標桿。
    的頭像 發表于 10-31 14:21 ?409次閱讀
    嵌入式<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>回歸測試四大最佳實踐(附自動化測試工具TESSY使用教程)

    C/C++代碼靜態測試工具Perforce QAC 2025.3的新特性

    ?Perforce Validate??QAC?項目的相對/根路徑的支持。C++?分析也得到了增強,增加了用于檢測 C++?并發問題的新檢查,并改進了實體名稱和實
    的頭像 發表于 10-13 18:11 ?572次閱讀
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>代碼靜態測試工具Perforce QAC 2025.3的新特性

    技能+1!如何在樹莓派上使用C++控制GPIO?

    和PiGPIO等庫,C++可用于編程控制樹莓派的GPIO引腳。它提供了更好的性能和控制能力,非常適合對速度和精度要求較高的硬件項目。在樹莓派社區,關于“Python
    的頭像 發表于 08-06 15:33 ?4154次閱讀
    技能+1!如何在樹莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    C++ 與 Python:樹莓派上哪種語言更優?

    Python是樹莓派上的首選編程語言,我們的大部分教程都使用它。然而,C++在物聯網項目中同樣廣受歡迎且功能強大。那么,在樹莓派項目中選擇哪種語言更合適呢?Python因其簡潔性、豐富的庫和資源而被
    的頭像 發表于 07-24 15:32 ?949次閱讀
    <b class='flag-5'>C++</b> 與 Python:樹莓派上哪種語言更優?

    請問如何在C++中使用NPU上的模型緩存?

    無法確定如何在 C++ 的 NPU 上使用模型緩存
    發表于 06-24 07:25

    在OpenVINO? C++代碼啟用 AddressSanitizer 時的內存泄漏怎么解決?

    在 OpenVINO? C++代碼啟用 AddressSanitizer 時遇到內存泄漏: \"#0 0xaaaab8558370 in operator new(unsigned
    發表于 06-23 07:16

    主流的 MCU 開發語言為什么是 C 而不是 C++

    在單片機的地界兒里,C語言穩坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩不轉。先說
    的頭像 發表于 05-21 10:33 ?1041次閱讀
    主流的 MCU 開發語言為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

    C++學到什么程度可以找工作?

    C++學到什么程度可以找工作?要使用C++找到工作,特別是作為軟件開發人員或相關職位,通常需要掌握以下幾個方面: 1. **語言基礎**:你需要對C++的核心概念有扎實的理解,包括但不限于指針、
    發表于 03-13 10:19