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

C++內(nèi)存管理面經(jīng)

 更新時間:2023年03月28日 10:55:11   作者:attacking tiger  
這篇文章主要介紹了C++的內(nèi)存分配方式以及介紹了下棧和堆的區(qū)別,感興趣的小伙伴可以參考閱讀本文

1. 簡述下C++的內(nèi)存分配方式。

  • 在C++中,內(nèi)存可以分為 5 個區(qū),分別為棧,堆,自由存儲區(qū),全局/靜態(tài)變量,常量存儲區(qū)
  • (1):在執(zhí)行函數(shù)時,函數(shù)內(nèi)局部變量的存儲單元在棧上創(chuàng)建,函數(shù)執(zhí)行完時這些存儲單元被自動釋放。
  • (2):通過 malloc 分配的內(nèi)存塊,通常和 free 搭配,需要手動釋放。
  • (3)自由存儲區(qū):通過 new 分配的內(nèi)存塊,通常和 delete 搭配,也需要手動釋放。
  • (4)全局/靜態(tài)存儲區(qū):用于存儲全局變量和靜態(tài)變量。
  • (5)常量存儲區(qū):用于存放常量,不允許修改。

 2. 簡述下棧和堆的區(qū)別。

  • (1)空間分配不同:棧存放函數(shù)內(nèi)的局部變量,由操作系統(tǒng)自動釋放;堆通過 malloc 分配,需要手動釋放。
  • (2)緩存方式不同:棧使用的是一級緩存,被調(diào)用時處于存儲空間;堆使用的是二級緩存,速度要慢些。
  • (3)數(shù)據(jù)結(jié)構(gòu)不同:棧類似棧結(jié)構(gòu),先進后出;堆類似數(shù)組結(jié)構(gòu),先進先出。

3. malloc 和局部變量分配在堆還是棧?

  • malloc 分配在堆中,他會分配一塊指定大小的內(nèi)存空間,并返回一個指針,使用完畢后需要手動回收。
  • 局部變量分配在在棧中,超過作用域后系統(tǒng)自動回收。

 4. 程序有哪些部分?分別的作用是什么?

  • (1)數(shù)據(jù)段:存放程序中已初始化的全局變量和靜態(tài)變量。
  • (2)代碼段:存放程序執(zhí)行代碼的一塊區(qū)域,頭部包含一些常數(shù)變量。
  • (3)BSS段:存放程序中未初始化的全局變量和靜態(tài)變量的一塊區(qū)域。
  • (4)可執(zhí)行程序在運行時會多出兩個區(qū)域:
  • :動態(tài)申請內(nèi)存用。從低向高增長。
  • :存儲局部變量,函數(shù)參數(shù)值。從高向低增長。
  • (5)在堆和棧之間有個文件映射區(qū)。

5. 程序的執(zhí)行過程是怎么樣的?

  • (1)操作系統(tǒng)創(chuàng)建相應的進程并分配進程空間,加載器把可執(zhí)行文件中的代碼段,數(shù)據(jù)段映射到進程中的虛擬空間。
  • (2)加載器讀入可執(zhí)行程序中的導入符號表,根據(jù)符號表可以查詢需依賴的動態(tài)依賴庫。
  • (3)加載器將程序中的動態(tài)依賴庫進行導入。
  • (4)初始化應用程序中的全局變量,對于全局變量自動調(diào)用構(gòu)造函數(shù)。
  • (5)進入程序入口函數(shù)開始執(zhí)行。

6. 初始化為 0 的全局變量在 bss 還是 data 區(qū)?

  • 數(shù)據(jù)區(qū):存放初始化不為 0 的全局變量和靜態(tài)變量。
  • BSS區(qū):存放初始化為 0 或未初始化的全局變量和靜態(tài)變量。

7. 什么是內(nèi)存泄漏?如何解決?

內(nèi)存泄漏:

  • 申請了一塊兒內(nèi)存空間,但是使用完畢后沒有釋放。
  • (1)new 和 malloc 申請后,沒有使用 delete 和 free 釋放。
  • (2)子類繼承父類時,父類析構(gòu)函數(shù)不是虛函數(shù)。
  • (3)windows 句柄資源使用后沒有釋放。

對策:

  • (1)養(yǎng)成良好的編程習慣,分配的內(nèi)配使用后,記的釋放。
  • (2)將分配內(nèi)存的指針以鏈表的形式存儲,使用完畢后從鏈表中刪除進行管理。
  • (3)使用智能指針。

8. 常見的內(nèi)存錯誤有哪些?

常見內(nèi)存錯誤:

  • (1)內(nèi)存分配未成功卻使用。
  • (2)內(nèi)存分配成功,但是未初始化就引用。
  • (3)內(nèi)存分配成功并初始化,但是操作超出了內(nèi)存的邊界。
  • (4)忘記了釋放內(nèi)存,造成內(nèi)存泄漏。
  • (5)釋放了內(nèi)存卻繼續(xù)使用。

對策:

  • (1)用 malloc 或 new 申請內(nèi)存后,應該檢查返回的指針是否為 NULL。
  • (2)為指針初始化為 NULL,為數(shù)組和動態(tài)內(nèi)存賦初值。
  • (3)避免數(shù)組越界。
  • (4)動態(tài)內(nèi)存的申請和釋放必須配對。
  • (5)用 free 和 delete 釋放內(nèi)存之后,指針應該置空防止野指針。
  • (6)使用智能指針。

9. 什么是內(nèi)存對齊?

  • 為了能夠使 CPU 進行快速的訪問,變量的起始地址應該具有某些特征,即對齊。比如 4 字節(jié)的 int,起始地址應該在 4 字節(jié)的邊界上。
  • 假如變量的地址不是自然對齊,那么 CPU 要訪問該值的話需要訪問兩次或三次內(nèi)存,而對齊的話只需要一次,訪問的速度更快。
  • 內(nèi)存對齊一般應用在 struct,class,union 數(shù)據(jù)類型中。

 到此這篇關(guān)于C++內(nèi)存管理面經(jīng)的文章就介紹到這了,更多相關(guān)C++內(nèi)存管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言實現(xiàn)簡易通訊錄實例

    C語言實現(xiàn)簡易通訊錄實例

    大家好,本篇文章主要講的是C語言實現(xiàn)簡易通訊錄實例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • C++中的const的使用詳解

    C++中的const的使用詳解

    這篇文章主要介紹了 C++中的const的使用詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C++11 并發(fā)指南之多線程初探

    C++11 并發(fā)指南之多線程初探

    這篇文章主要介紹了C++11 并發(fā)指南之多線程初探,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • Opencv 視頻轉(zhuǎn)為圖像序列的實現(xiàn)

    Opencv 視頻轉(zhuǎn)為圖像序列的實現(xiàn)

    今天小編就為大家分享一篇Opencv 視頻轉(zhuǎn)為圖像序列的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 關(guān)于C++數(shù)組中重復的數(shù)字

    關(guān)于C++數(shù)組中重復的數(shù)字

    這篇文章主要介紹得是關(guān)于C++數(shù)組中重復的數(shù)字,文章以問題描述得形式,對問題展開分析用不同得方法去解決問題并附上方法得詳細代碼,需要的朋友可以參考以下文章得具體內(nèi)容
    2021-11-11
  • 利用Matlab制作環(huán)形相冊效果詳解

    利用Matlab制作環(huán)形相冊效果詳解

    這篇文章主要為大家介紹了如何利用Matlab制作出環(huán)形相冊的效果,文中的示例代碼講解詳細,對我們學習Matlab有一定幫助,需要的可以參考一下
    2022-03-03
  • C語言 經(jīng)典題目螺旋矩陣 實例詳解

    C語言 經(jīng)典題目螺旋矩陣 實例詳解

    這篇文章主要介紹了C語言 經(jīng)典題目螺旋矩陣 實例詳解的相關(guān)資料,這里附有代碼實例及實現(xiàn)效果圖,需要的朋友可以參考下
    2016-12-12
  • php5系列的apache遠程執(zhí)行漏洞攻擊腳本

    php5系列的apache遠程執(zhí)行漏洞攻擊腳本

    這篇文章主要介紹了php5系列的apache遠程執(zhí)行漏洞攻擊腳本,需要的朋友可以參考下
    2014-06-06
  • C++使用string的大數(shù)取模運算(5)

    C++使用string的大數(shù)取模運算(5)

    這篇文章主要為大家詳細介紹了C++使用string的大數(shù)取模運算,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • C++實現(xiàn)編碼轉(zhuǎn)換的示例代碼

    C++實現(xiàn)編碼轉(zhuǎn)換的示例代碼

    這篇文章主要介紹了C++實現(xiàn)編碼轉(zhuǎn)換的示例代碼,幫助大家快捷的實現(xiàn)編碼轉(zhuǎn)換,感興趣的朋友可以了解下
    2020-08-08

最新評論

黑山县| 新蔡县| 江都市| 四会市| 巢湖市| 宝兴县| 观塘区| 萨嘎县| 凤冈县| 景宁| 吐鲁番市| 辉南县| 阿鲁科尔沁旗| 周至县| 甘肃省| 渭南市| 白银市| 紫云| 樟树市| 梨树县| 安化县| 汾阳市| 桂平市| 怀来县| 诸暨市| 凤城市| 大荔县| 满城县| 杭州市| 同德县| 攀枝花市| 沙雅县| 海淀区| 清水县| 册亨县| 会宁县| 五原县| 正蓝旗| 昌邑市| 涡阳县| 彩票|