正文

回到頂部

1. 一個錯誤釋放內(nèi)存的例子

下面的場景會有什么錯?

1 std::string *stringArray = new std::string[100];2 3 ...4 5 delete stringArray

 

一切看上去都是有序的。new匹配了一個delete。但有一些地方確實是錯了。程序的行為是未定義的。至少來說,stringArray指向的100個string對象中的99個看上去都不能被正確釋放,因為他們的析構(gòu)函數(shù)可能永遠不會被調(diào)用。

回到頂部

2. 使用new 和delete時究竟做了啥?

當你使用一個new表達式(通過使用new動態(tài)的創(chuàng)建一個對象)時,會發(fā)生兩件事情。第一,內(nèi)存被分配(通過一個叫做operator new的函數(shù),看Item 49和Item 51)。第二,在分配的內(nèi)存上調(diào)用了一個或多個構(gòu)造函數(shù)。當你使用一個delete

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式