正文
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
延伸閱讀
學習是年輕人改變自己的最好方式