C 回憶錄 (一)new和malloc的區別

2021-07-04 02:14:17 字數 1016 閱讀 3201

以前學習c++只是知道語法,對於一些比較深層次的東西理解還是很不到位,在很多面試過程中吃過虧,所以打算把一些零零碎碎的知識總結一下,填補知識的空白。

new和malloc的區別,以前都是迷迷糊糊的用,今天在其他部落格上看到了,就順便整理過來。

內部資料型別是編譯器本來就認識的,不需要使用者自己定義;非內部資料型別不是編譯器本來就認識的,需要使用者自己定義才能讓編譯器識別。運算子使用是否正確,編譯器在編譯掃瞄分析的時候就可以判定;庫函式是已經編譯過的**,編譯器不會編譯檢查,由聯結器將庫同使用者寫的**合成exe檔案。對於非內部資料型別的物件而言,光用malloc和free無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件在消亡之前要自動執行析構函式。由於malloc和free是庫函式,不是運算子,不在編譯器的控制許可權之內,不能夠把執行建構函式和析構函式的任務強加給malloc和free。因此c++需要乙個能夠完成動態記憶體分配和初始化工作的運算子new,以及乙個能夠完成清理與釋放工作的運算子delete。注意new/delete不是庫函式。由於malloc和free是庫函式,不是運算子,他們不能執行構造和析構函式,只是負責分配記憶體。

1、首先malloc/free是c++/c語言的標準函式庫,new /delete是c++的運算子。他們都是用來申請動態記憶體和釋放記憶體的。

2、對於非內部資料型別的物件而言,光用malloc和free無法滿足動態物件的要求。物件在建立的同時要執行建構函式,物件在消亡的之前要執行析構函式。由於malloc和free是庫函式而不是運算子,不在編譯器控制許可權內,不能夠把執行建構函式和析構函式的任務強加於malloc和free。

3、c++程式經常呼叫c函式,而c程式只能呼叫malloc和free管理動態記憶體。new是個操作符,和「+」,「-」,「="...一樣的地位;malloc是個分配記憶體的函式,供你呼叫。new是保留字,不需要標頭檔案支援;malloc需要標頭檔案庫函式支援。new建立的是乙個物件,malloc分配的是一塊記憶體。new建立的物件你可以把它當作乙個普通的物件,用成員函式訪問,不要直接訪問它的位址空間;malloc分配的是一塊記憶體區域,可以用指標訪問,而且可以在裡面移動指標。

大三回憶錄 回憶和反思

不知不覺中,大三的尾聲接近了,不知不覺中,最後一科考試科目也結束了,從名義上說,大四的學生已經離校,我已經屬於大四的一員了。當年剛剛上大學的時候,以為大四總是那麼遙遠,迷迷糊糊中,自己已經是這裡面的一員了。知識篇回憶 回想起剛剛上大三的時候,我剛剛走到軟體工程的大門前,大二暑假用vb做了個學生管理系...

一周回憶錄8 17

不知不覺,又到了星期天,這周感覺過的是一半充實的,為什麼這樣說呢?前幾天因為生病,都不在狀態。病好了後,趕快投入到了學習當中。繼續奮戰我的vue實戰專案,計畫趕不上變化,明顯是泡湯了。這幾天的學習當中遇到了很多小問題,在解決問題的過程中,也收穫了很多資源。一 記憶碎片 二 學習進度 按照時間算得話,...

工作回憶錄 第一年 莽撞少年

畢業在玉泉的計算機 出發地是從家裡 第一次乘坐的飛機 風塵僕僕,你獨自來到了北京上地 公司的一位女士叫money 迫使你籤了三年的賣身契 記得那天是7月17 你住進了西二旗 與你同住的是三位兄弟 個高的是重慶童心 會做菜的來自紹興 還有一位是遼寧李 你有六個月的試用期 前面三個月還要學習 課堂講得是...