【原创】new和delete
為普通的變量申請(qǐng)內(nèi)存空間,可以使用下面的語(yǔ)法規(guī)則。
new int; //開辟一個(gè)存放整型變量的空間,返回一個(gè)指向整形數(shù)組的指針 new int(100); //開辟一個(gè)存放整形變量的空間,并指定其初值為100 float* p=new float(3.1415926); //開辟一個(gè)存放實(shí)數(shù)的空間,并指定該實(shí)數(shù)的初值為3.1415926, //將返回的指向?qū)嵭蛿?shù)據(jù)的指針賦給指針變量p當(dāng)new操作符被執(zhí)行后如果有足夠的內(nèi)存空間,則new按分配一塊內(nèi)存,并返回指向該該內(nèi)存起始地址的指針;
如果內(nèi)存空間不夠,則返回NULL
同樣可以使用new來(lái)為一個(gè)數(shù)組分配內(nèi)存空間,并相應(yīng)的使用delete來(lái)將其釋放.
Point* pt=new Point[100];????????????????????????????????????????????????????????????????????????????????????????????????
在堆上創(chuàng)建了一個(gè)含有100個(gè)對(duì)象的數(shù)組,并把返回的指針賦給指針變量pt。這樣就在堆上為100個(gè)Point對(duì)象分配了足夠的內(nèi)存并為沒一個(gè)對(duì)象調(diào)用了構(gòu)造函數(shù)。
delete pt;? //釋放數(shù)組中的第一個(gè)對(duì)象,并調(diào)用第一個(gè)對(duì)象的析構(gòu)函數(shù)
delete [] pt;? //釋放數(shù)組中所有對(duì)象,并為數(shù)組的所有對(duì)象調(diào)用析構(gòu)函數(shù)
new和delete實(shí)際調(diào)用了malloc和free函數(shù)。但new運(yùn)算符除了分配內(nèi)存外,還
要調(diào)用構(gòu)造函數(shù)。同理,delete會(huì)調(diào)用類的析構(gòu)函數(shù)。malloc函數(shù)卻只是負(fù)責(zé)分配內(nèi)存,不會(huì)進(jìn)行初始化類成員的工作,同樣free也不會(huì)調(diào)用析構(gòu)函數(shù)
轉(zhuǎn)載于:https://www.cnblogs.com/mx113/articles/1603995.html
總結(jié)
以上是生活随笔為你收集整理的【原创】new和delete的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Windows窗体编程(二)
- 下一篇: Linq to xml API中 XNa