国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++基礎知識點整理筆記(四)

這篇具有很好參考價值的文章主要介紹了C++基礎知識點整理筆記(四)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

10. C++的內存管理

在C++中,內存被分成五個區(qū):棧、堆、自由存儲區(qū)、靜態(tài)存儲區(qū)、常量區(qū)

  • (一) 棧:存放函數的參數和局部變量,編譯器自動分配和釋放
  • (二) 堆:new關鍵字動態(tài)分配的內存,由程序員手動進行釋放,否則程序結束后,由操作系統(tǒng)自動進行回收
  • (三) 自由存儲區(qū):由malloc分配的內存,和堆十分相似,由對應的free進行釋放
  • (四) 全局/靜態(tài)存儲區(qū):存放全局變量和靜態(tài)變量
  • (五) 常量區(qū):存放常量,不允許被修改

11. C++中內存泄漏的幾種情況

內存泄漏是指己動態(tài)分配的堆內存由于某種原因程序未釋放或無法釋放,造成系統(tǒng)內存的浪費,導致程序運行速度減慢甚至系統(tǒng)崩潰等嚴重后果。有以下幾個原因:

  • 1)類的構造函數和析構函數中new和delete沒有配套
  • 2)在釋放對象數組時沒有使用delete[],使用了delete
  • 3)沒有將基類的析構函數定義為虛函數,當基類指針指向子類對象時,如果基類的析構函數不是virtual,那么子類的析構函數將不會被調用,子類的資源沒有正確釋放,因此造成內存泄露
  • 4)沒有正確的清楚嵌套的對象指針

12. new、delete、malloc、free之間的關系

  • new/delete,malloc/free都是動態(tài)分配內存的方式;
  • new/delete是運算符,編譯器保證調用構造和析構函數對對象進行初始化/析構,但是庫函數malloc/free是庫函數,不會執(zhí)行構造/析構;
  • new會自動計算需分配的空間,malloc不行;
  • new是類型安全的,而malloc不是;
  • new返回指定類型指針,malloc返回void*指針,需要強制類型轉換;
  • new可以被重載,malloc不能
  • new底層調用malloc函數分配內存,然后調用構造函數

13. delete和delete[]的區(qū)別

  • a) delete只會調用一次析構函數,而delete[]會調用每個成員的析構函數
  • b) 用new分配的內存用delete釋放,用new[]分配的內存用delete[]釋放

delete和delete[]是用于釋放動態(tài)分配的內存的C++關鍵字,它們之間有一些重要的區(qū)別:

1. delete用于釋放通過`new`分配的單個對象的內存,而delete[]用于釋放通過`new[]`分配的數組的內存。

2. 釋放數組必須使用delete[],而不能使用delete。因為對于使用`new[]`分配的動態(tài)數組,編譯器在內存中存儲了有關數組長度的額外信息,這樣在釋放數組時才能正確處理。

3. delete和delete[]的用法不同。delete用于對單個對象的指針進行釋放,例如`delete obj;`。delete[]用于對數組的指針進行釋放,例如`delete[] arr;`。

4. delete要求指針指向通過`new`分配的單個對象,而delete[]要求指針指向通過`new[]`分配的數組。如果不符合要求,行為是未定義的。

總結來說,delete和delete[]的最主要的區(qū)別在于對于動態(tài)數組的釋放:delete用于釋放單個對象的內存,而delete[]用于釋放動態(tài)數組的內存,并且使用方式也不同。使用delete來釋放通過new[]分配的數組會導致未定義行為,同樣使用delete[]來釋放通過new分配的單個對象也會出錯。因此,為了避免內存泄漏和意外行為,需要正確選擇delete或delete[]來釋放對應的內存。文章來源地址http://www.zghlxwxcb.cn/news/detail-607174.html

到了這里,關于C++基礎知識點整理筆記(四)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • C語言:數組、字符串知識點整理:

    補充 :數組長度= sizeof(arr)/sizeof(arr[0]) 注意: ?。?! 不適用于當arr 充當形參時(函數傳參) ?。?! 因為函數 傳遞 的是 int arr[0] 的 地址(指針) ,而 不是數組內容 , 若在此情況計算整形數組長度 ????????在X86系統(tǒng)下,指針大小為 4 ,所以計算結果為4/4=1; ??????

    2024年03月10日
    瀏覽(25)
  • 面試指南:C++之STL知識點

    相關系列文章 面試指南:C++之STL知識點 C++內存分配策略 深入理解STL空間分配器(一): new_allocator 深入理解STL空間分配器(二):mt_allocator 深入理解STL空間分配器(三):pool_allocator 深入理解STL空間分配器(四):bitmap_allocator 目錄 1.講講STL的六大組件 2.vector 2.1.簡單說說vector 2.2.vecto

    2024年02月21日
    瀏覽(22)
  • 【C++】如果你準備學習C++,并且有C語言的基礎,我希望你能簡單的過一遍知識點。

    【C++】如果你準備學習C++,并且有C語言的基礎,我希望你能簡單的過一遍知識點。

    相關視頻——黑馬程序員匠心之作|C++教程從0到1入門編程,學習編程不再難_嗶哩嗶哩_bilibili(1-83) 我的小站——半生瓜のblog 我知道這個視頻早已經被很多人學習并且記錄筆記,但是我還是想再過一遍前面的基礎知識點,所以我這個筆記會非常的簡潔,適合有C語言基礎的小伙

    2024年02月01日
    瀏覽(27)
  • Java基礎-知識點03(面試|學習)

    Java基礎-知識點03(面試|學習)

    String 類是Java中用于表示字符串的類。在Java中,字符串是一系列字符的序列,用于表示文本數據。 String類的作用及特性 1、 創(chuàng)建字符串 : 可以通過字符串字面量或使用new來創(chuàng)建字符串對象。 2、 字符串長度 : 可以使用length()方法獲取字符串的長度。 3、 字符串連接

    2024年04月15日
    瀏覽(48)
  • Java面試知識點(全)- Java面試基礎部分一

    Java面試知識點(全)- Java面試基礎部分一

    Java面試知識點(全)https://nanxiang.blog.csdn.net/article/details/130640392 語法基礎 封裝 利用抽象數據類型將數據和基于數據的操作封裝在一起,使其構成一個不可分割的獨立實體。數據被保護在抽象數據類型的內部,盡可能地隱藏內部的細節(jié),只保留一些對外接口使之與外部發(fā)生聯(lián)

    2024年02月05日
    瀏覽(28)
  • 《模擬電子技術》期末復習筆記4——上交大鄭益慧課件知識點整理

    《模擬電子技術》期末復習筆記4——上交大鄭益慧課件知識點整理

    筆記整理自B站學習教程 《 模擬電子技術基礎 上交大 鄭益慧主講 》 1904年,世界上第一只真空電子二極管在英國物理學家弗萊明的手下誕生,電子技術的時代開始了。為了提高性能, 1906年,美國發(fā)明家德福雷斯特做出了第一個三極管,這是電子技術工業(yè)革命開始的標志。從

    2024年02月02日
    瀏覽(133)
  • Spring Boot 基礎知識點1 (含面試題1)

    Spring Boot 基礎知識點1 (含面試題1)

    Spring Boot 是一款基于 Spring 框架的開源應用程序開發(fā)工具,它旨在簡化 Spring 應用程序的配置和開發(fā)過程。Spring Boot 提供了一種簡單的方式來創(chuàng)建可獨立運行的、生產級別的應用程序,并在需要時進行部署。Spring Boot 在微服務架構和云計算環(huán)境下得到了廣泛應用。 本次主要是

    2024年01月25日
    瀏覽(18)
  • C++筆記(細碎小知識點)1

    2024年02月08日
    瀏覽(23)
  • 【C語言】指針知識點筆記(2)

    【C語言】指針知識點筆記(2)

    目錄 一、野指針 二、assert斷言 三、指針的使用和傳址調用 四、數組名的理解 五、使用指針訪問數組

    2024年01月18日
    瀏覽(23)
  • C++入門知識點——解決C語言不足

    C++入門知識點——解決C語言不足

    ????????????????????????Take your time ! ???????????????????????? ??個人主頁:??????大魔王?????? ??所屬專欄:??魔王的修煉之路–C++?? 如果你覺得這篇文章對你有幫助,請在文章結尾處留下你的 點贊 ??和 關注 ??,支持一下博主

    2024年02月12日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包