您現(xiàn)在的位置是:首頁 >綜合 > 2023-08-01 10:38:31 來源:
del和delete鍵的區(qū)別(delete與 delete []區(qū)別)
大家好,我是小小根,我來為大家解答以上問題。del和delete鍵的區(qū)別,delete與 delete []區(qū)別很多人還不知道,現(xiàn)在讓我們一起來看看吧!
1、delete只會(huì)調(diào)用一次析構(gòu)函數(shù),而delete[]會(huì)調(diào)用每一個(gè)成員的析構(gòu)函數(shù)。在More Effective C++中有更為詳細(xì)的解釋:“當(dāng)delete操作符用于數(shù)組時(shí),它為每個(gè)數(shù)組元素調(diào)用析構(gòu)函數(shù),然后調(diào)用operator delete來釋放內(nèi)存?!眃elete與new配套,delete []與new []配套
2、MemTest *mTest1=new MemTest[10];
3、MemTest *mTest2=new MemTest;
4、Int *pInt1=new int [10];
5、Int *pInt2=new int;
6、delete[]pInt1; //-1-
7、delete[]pInt2; //-2-
8、delete[]mTest1;//-3-
9、delete[]mTest2;//-4-
10、在-4-處報(bào)錯(cuò)。
11、這就說明:對(duì)于內(nèi)建簡單數(shù)據(jù)類型,delete和delete[]功能是相同的。對(duì)于自定義的復(fù)雜數(shù)據(jù)類型,delete和delete[]不能互用。delete[]刪除一個(gè)數(shù)組,delete刪除一個(gè)指針。簡單來說,用new分配的內(nèi)存用delete刪除;用new[]分配的內(nèi)存用delete[]刪除。delete[]會(huì)調(diào)用數(shù)組元素的析構(gòu)函數(shù)。內(nèi)部數(shù)據(jù)類型沒有析構(gòu)函數(shù),所以問題不大。如果你在用delete時(shí)沒用括號(hào),delete就會(huì)認(rèn)為指向的是單個(gè)對(duì)象,否則,它就會(huì)認(rèn)為指向的是一個(gè)數(shù)組。
本文到此講解完畢了,希望對(duì)大家有幫助。