new和delete、malloc和free之間的異同點以及用法例項
/* malloc和free new和delete 兩大類之間的<strong><span style="font-size:18px;">根本區別</span></strong> 1.malloc和free是屬於c語言範疇的,而new和delete是屬於c++範疇的。 2.malloc不能給物件進行初始化,而new可以給物件進行初始化。 3.new和delete會自動呼叫類的建構函式和解構函式,而malloc和free不會呼叫。 4.malloc和delete、new和free 可以混搭,但不建議這樣用,因為會造成程式碼不方便管理,並且會造成物件無法呼叫解構函式而出錯,比如使用new 和 free,如果類裡開闢了一段新空間,如果無法呼叫解構函式,那麼這段空間就會浪費點。 */ #include "stdafx.h" #include <iostream> using namespace std; class Test{ public: Test(int _a){ a = _a; cout << "建構函式被執行" << endl; } ~Test(){ cout << "解構函式被執行" << endl; } private: int a; }; int main() { //malloc 和 free 以及new 和 delete 用法說明 //1.基礎資料型別的動態建立和釋放 int *p = (int *)malloc(sizeof(int)); *p = 1; free(p); int *p = new int; *p = 2; delete p; //2.陣列的動態建立和釋放 int *p = (int *)malloc(10*sizeof(int));// 相當於int p[10] p[0] = 10; cout << p[0] << endl; free(p); int *p2 = new int[10]; p2[0] = 11; delete[]p2; //2.類的物件的動態建立和釋放 Test *t1 = (Test *)malloc(sizeof(Test)); free(t1); Test *t2 = new Test(12);//初始化 delete t2; //結論:可發現 new 和 delete 會呼叫建構函式和解構函式 而malloc 和 free 不會呼叫! return 0; }
相關推薦
new和delete、malloc和free之間的異同點以及用法例項
/* malloc和free new和delete 兩大類之間的<strong><span style="font-size:18px;">根本區別</span></strong> 1.malloc和free是屬於c語
new和delete,malloc和free 轉自http://www.kuqin.com/effectivec2e/ch01a.htm
條款3:儘量用new和delete而不用malloc和free malloc和free(及其變體)會產生問題的原因在於它們太簡單:他們不知道建構函式和解構函式。 假設用兩種方法給一個包含10個string物件的陣列分配空間,一個用malloc,另一個用new: stri
delete和delete[ ]、exit和return
delete和delete[ ] 在C++中,申請堆上空間有著兩種方式new和new[ ],new是用來申請單個元素空間,new[ ]是申請存放多個元素的連續空間。 空間申請方式的不同對應著空間釋放的方式也不同,教材上說new和new[ ]分別對應著delete和delete[ ]
new, delete, malloc,free用法心得
這裡主要講一下,我總結的一些記憶體相關問題問題。 1)Opencv 中IplImage 的賦值問題。請看下面程式碼: IplImage* img1 = NULL; IplImage* img2 = NULL; img1 = cvLoadImage("testImg.jpg"
new/delete、malloc/free 的區別
標準庫函數 class 字節數 定義 自動釋放 nbsp 知識 策略 用途 相同點 1、都可以動態的申請或釋放內存 2、存儲方式相同,動態申請的內存都存放在堆中,無法自動釋放,要調用對應的delete和free 區別 1、new能自行的計算需要分配的空間,malloc需
new、malloc和alloctor關係
今天看C++primer,看到了動態記憶體管理類,alloctor,也涉及到free,對此有些不清楚,故收集整理一下,理清知識點。 http://blog.sina.com.cn/s/blog_9054a0360101289p.html 首先來說new和malloc。 n
linux下brk、mmap、malloc和new的區別
答:brk是系統呼叫,主要工作是實現虛擬記憶體到記憶體的對映,可以讓程序的堆指標增長一定的大小,邏輯上消耗掉一塊虛擬地址空間,malloc向OS獲取的記憶體大小比較小時,將直接通過brk呼叫獲取虛擬地址。 mmap是系統呼叫,也是實現虛擬記憶體到記憶體的對映,可以讓程序
jQuery中focusin()和focus()、find()和children()的差別
nes jquery ams rip 1.4 fadein ++ display his jQuery中focus()和focusin()、focus()和children()的差別 focus()和focusin() focus()和focusin
python中sorted和.sorted 、reversed和reverse的使用
訪問 seq bject soft time mes lse new 一個 #encoding = utf-8 list = [1,8,3,6] print(list.sort()) #Noneprint(list)#[1,3,6,8]print(sorted(list))
Collection與Collections、ArrayList和Vector、HashMap和Hashtable(面試常用)
Collections與Collection 1. Collections是java.util下的類,它包含有各種有關集合操作的靜態方法2. Collection是java.util下的介面,它是各種集合結構的父介面 ArrayList和Vector1. 同步性: Vector是執行緒安全
js--日期和Math、陣列和物件API
一、日期 Date.now() //獲取當前時間毫秒數,從1970年到現在的毫秒數 var dt =new Date() dt.getTime() //獲取毫秒數 dt.getFullYear() //年 dt.getMonth() //月(0-11) dt.ge
C#學習( ref和out、堆和棧、列舉)
一、值型別和引用型別 1、值型別直接儲存其值,而引用型別儲存對其值的引用。 引用型別:基類為Objcet 值型別:均隱式派生自System.ValueType 2、值和引用型別儲存 值型別變數聲明後,不管是否已經賦值,編譯器為其分配記憶體。 引用型別當宣告一個類
Spannable 和 Editable、SpannableString 和 SpannableString
Spanned(可附加標記的字元序列) ** * This is the interface for text that has markup objects attached to * ranges of it. Not all text classes
python-同步和非同步、阻塞和非阻塞、序列和並行、並行和併發、密集型、執行緒和程序的相關概念
1. 同步和非同步 關注的是訊息的通訊機制,描述的是一種行為方式,是多個任務之間的關係。 ① 同步: 呼叫者主動等待被呼叫方返回結果,在沒有返回結果之前,就一直專職等待。 千萬不要把計算機中“同步”理解成“同時執行”。 ② 非同步:呼叫者傳送請求請求,不會專職等待
有關C語言的列舉型別和goto、break和continue語句
有關C語言的列舉型別和goto、break和continue語句 今天我們首先來看一下列舉型別,因為這個真的很容易讓人忘記,感覺平常都用不上的角色,所以今天特意將它拿出來講解一下 首先我們看一下列舉的一般用法 typedef enum { sun = 1, mon=2,
(Java) ---- Eclipse快捷鍵、文件註釋和製作、生成和匯入jar包
【Eclipse快捷鍵】 (1)ctrl+T 檢視類的繼承樹。 (2)Ctrl+點選類名或者方法名,來檢視原始碼。 JDK (JRE(JVM,執行時所需要的核心類庫),開發工具(javac...)) 【Java中文件的註釋和製作】 /** + 回車(Enter
async和await、Task和執行緒池執行緒的關係
計算機進入多核時代,開發人員想要充分利用計算機核心,需要編寫多執行緒程式。執行緒屬於程序,理想狀態下,在4核的計算機上最好有4個執行緒。 早期的執行緒建立是利用 Thread類,執行緒的建立需要花費很多時間,基於此,微軟公司為開發人員建立了執行緒池,執行緒池具有智慧爬山演算法,可以 根據執行
mongodb java增刪該查和模糊、排序和分頁查詢
package mongodb; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.regex.Pattern; import com.mong
CSS中常見屬性和值、盒子和定位
一、CSS中常見屬性和值 1、字型屬性 1> 字型家族:font-family (宋體、楷體...) 2> 字型風格:font-style (normal普通、italic斜體) 3> 字型大小:font-size 4> 字型加粗:font-weight:bold 2、控制文
java中類和元件、方法和事件的辨析
主要來源於網上資料的總結 1、類 Class 元件Component 元件對外暴露一個或多個介面,供外界呼叫。元件內部由多個類來協同實現指定的功能。對於複雜的元件,會包括很多類,還可能包含配置檔案、介面、依賴的庫檔案等,元件也可以包含或者使用其他的元件,構成更大粒度的