new可以說(shuō)是個(gè)一個(gè)關(guān)鍵字,也可以說(shuō)是一個(gè)運(yùn)算符,并且可以被重載。C++中new運(yùn)算符用于動(dòng)態(tài)分配和撤銷(xiāo)內(nèi)存的運(yùn)算符。
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、雙橋ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的雙橋網(wǎng)站制作公司
用new分配數(shù)組空間時(shí)不能指定初值。如果由于內(nèi)存不足等原因而無(wú)法正常分配空間,則new會(huì)返回一個(gè)空指針NULL,用戶可以根據(jù)該指針的值判斷分配空間是否成功。
一般來(lái)說(shuō),使用new申請(qǐng)空間時(shí),是從系統(tǒng)的“堆”(heap)中分配空間。申請(qǐng)所得的空間的位置時(shí)根據(jù)當(dāng)時(shí)的內(nèi)存的實(shí)際使用情況決定的。但是,在某些特殊情況下,可能需要在程序員指定的特定內(nèi)存創(chuàng)建對(duì)象,這就是所謂的“定位放置new”(placement new)操作。
1、開(kāi)辟單變量地址空間
new int; //開(kāi)辟一個(gè)存放數(shù)組的存儲(chǔ)空間,返回一個(gè)指向該存儲(chǔ)空間的地址.int *a = new int 即為將一個(gè)int類(lèi)型的地址賦值給整型指針a. 2)int *a = new int(5) 作用同上,但是同時(shí)將整數(shù)賦值為5。
2、開(kāi)辟數(shù)組空間
要訪問(wèn)new所開(kāi)辟的結(jié)構(gòu)體空間,無(wú)法直接通過(guò)變量名進(jìn)行,只能通過(guò)賦值的指針進(jìn)行訪問(wèn)。用new可以動(dòng)態(tài)開(kāi)辟,撤銷(xiāo)地址空間。在編程序時(shí),若用完一個(gè)變量,下次需要再用,可以在每次開(kāi)始使用時(shí)開(kāi)辟一個(gè)空間,在用完后撤銷(xiāo)它。
擴(kuò)展資料:
C++中使用new的注意事項(xiàng):
1、用戶是無(wú)法主動(dòng)調(diào)用構(gòu)造函數(shù)的,所以需要借助placement new,但是用戶可以主動(dòng)調(diào)用析構(gòu)函數(shù),所以用完這些對(duì)象后,調(diào)用析構(gòu)函數(shù),然后用對(duì)應(yīng)分配內(nèi)存的方法去釋放內(nèi)存。
2、事實(shí)上malloc并不一定比operatornew節(jié)省多少時(shí)間,用placement new常常是為了考慮性能,所以會(huì)配合內(nèi)存池一起使用。
以上就是c++中new的用法詳解的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!