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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

malloc 源码_【C++学习笔记(九)】之 new运算符的使用/ new 与 malloc的异同(附代码,详细注释)...

發布時間:2025/3/19 c/c++ 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 malloc 源码_【C++学习笔记(九)】之 new运算符的使用/ new 与 malloc的异同(附代码,详细注释)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

new 運算符的使用

一. new的簡單介紹:

  new運算符用于在堆區開辟空間,所有new出來的對象,對返回該類對象的指針。

二. new 與 malloc 的異同點:

  1.malloc作用相同, malloc 也是在堆區開辟空間, 但返回的是 void* ,需要強制轉

  2.malloc 不會調用構造函數, new 會調用構造函數。

  3.malloc 配合 free 釋放堆區空間 ,new 配合 delete釋放堆區空間。

三. new 構造數組

  通過 new 開辟數組一定會調用默認構造函數,所以一定要提供默認構造函數

四. delete [] 釋放數組空間

  單一對象與數組的內存構造是不同的,數組的內存中還包括“數組大小記錄”,使得delele時知道應該調用幾次析構函數。當我們使用delete時,必須讓delete知道指針所指向的內存空間是否存在一個“數組大小記錄”,因此,使用delete[]就能讓delete知道這是一個數組,從而清楚應該調用幾次析構函數。

  注意:當用 void* 接受 new 出來的指針,會出現內存釋放的問題, 無法釋放內存

五.代碼如下,有詳細注釋:

#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std;class Person { public:Person(){cout << "默認構造函數調用" << endl;}Person(int a){cout << "有參構造函數調用" << endl;}~Person(){cout << "析構函數調用" << endl;} };void test01() {Person p1; //在棧區開辟空間Person* p2 = new Person; //在堆區開辟空間//所有new出來的對象,對返回該類型對象的指針// malloc 也是在堆區開辟空間, 但返回的是 void* ,需要強制轉換// malloc 不會調用構造函數, new 會調用構造函數// malloc 配合 free 釋放堆區空間 new 配合 delete釋放堆區空間delete p2;}void test02() {void* p = new Person(10);//當用 void* 接受 new 出來的指針,會出現內存釋放的問題, 無法釋放內存delete p; //雖然使用了delete,但是沒有調用析構函數,沒有釋放內存 }void test03() {// 通過 new 開辟數組一定會調用默認構造函數,所以一定要提供默認構造函數Person* pArray = new Person[10];//Person pArray2 ={Person(1), Person(2)}; 在棧上開辟數組空間,可以用有參構造//釋放數組 delete[]delete[] pArray;}int main() {test03();return 0; }

點進來,關注我 CV小鴿 看更多CV,深度學習,編程學習筆記,更有海量源碼等你來拿!!!

讓我們一起學習,一起進步!!!

OpenCV學習筆記?zhuanlan.zhihu.com機器學習筆記?zhuanlan.zhihu.comC++學習筆記?zhuanlan.zhihu.com深度學習筆記?zhuanlan.zhihu.com

總結

以上是生活随笔為你收集整理的malloc 源码_【C++学习笔记(九)】之 new运算符的使用/ new 与 malloc的异同(附代码,详细注释)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。