21.C 语言与 C++在内存分配有什么区别?
生活随笔
收集整理的這篇文章主要介紹了
21.C 语言与 C++在内存分配有什么区别?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C 語言與 C++在內存分配有什么區別?
在C語言中通過malloc和free來分配、釋放內存空間;在C++語言中通過new和delete來分配和釋放內存空間。
malloc/free和new/delete的主要區別:
1)malloc/free是庫函數,new/delete是操作符。
2)malloc是從堆上開辟空間,而new是從自由存儲區開辟;(自由存儲區是 C++抽象出來的概念,不僅可以是堆,還可以是靜態存儲區)。
3)new?初始化對象,調用對象的構造函數,對應的delete調用相應的析構函數?;malloc 僅僅分配內存,free僅僅回收內存。
4)返回值問題,malloc開辟成功返回void*,需要進行強制類型轉換,失敗返回NULL;new成功返回對象指針,失敗拋出異常。
5)使用free之前要判斷,要free的指針是!NULL的,使用delete則無須判斷。
free()釋放的是指針指向的內存!注意!釋放的是內存,不是指針!這點非常非常重要!指針是一個變量,只有程序結束時才被銷毀。釋放了內存空間后,原來指向這塊空間的指針還是存在!只不過現在指針指向的內容的垃圾,是未定義的,所以說是垃圾。因此,前面我已經說過了,釋放內存后把指針指向NULL,防止指針在后面不小心又被解引用了。非常重要啊這一點!
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的21.C 语言与 C++在内存分配有什么区别?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20. A *p=NULL,p 可以调用
- 下一篇: 22.类对象和类指针