日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

21.C 语言与 C++在内存分配有什么区别?

發(fā)布時間:2025/3/21 c/c++ 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 21.C 语言与 C++在内存分配有什么区别? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C 語言與 C++在內(nèi)存分配有什么區(qū)別?

在C語言中通過malloc和free來分配、釋放內(nèi)存空間;在C++語言中通過new和delete來分配和釋放內(nèi)存空間。


malloc/free和new/delete的主要區(qū)別:
1)malloc/free是庫函數(shù),new/delete是操作符。

2)malloc是從上開辟空間,而new是從自由存儲區(qū)開辟;(自由存儲區(qū)是 C++抽象出來的概念,不僅可以是堆,還可以是靜態(tài)存儲區(qū))。

3)new?初始化對象,調(diào)用對象的構(gòu)造函數(shù),對應(yīng)的delete調(diào)用相應(yīng)的析構(gòu)函數(shù)?;malloc 僅僅分配內(nèi)存,free僅僅回收內(nèi)存。

4)返回值問題,malloc開辟成功返回void*,需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,失敗返回NULL;new成功返回對象指針,失敗拋出異常。

5)使用free之前要判斷,要free的指針是!NULL的,使用delete則無須判斷。


free()釋放的是指針指向的內(nèi)存!注意!釋放的是內(nèi)存,不是指針!這點非常非常重要!指針是一個變量,只有程序結(jié)束時才被銷毀。釋放了內(nèi)存空間后,原來指向這塊空間的指針還是存在!只不過現(xiàn)在指針指向的內(nèi)容的垃圾,是未定義的,所以說是垃圾。因此,前面我已經(jīng)說過了,釋放內(nèi)存后把指針指向NULL,防止指針在后面不小心又被解引用了。非常重要啊這一點!

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的21.C 语言与 C++在内存分配有什么区别?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。