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