青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

delete與delete[]的區別

new分配的一個數組空間,比如說 int *array=new int[50],當用delete釋放這個空間時,用語句delete []arraydelete array是否等價!

C++告訴我們在回收用 new 分配的單個對象的內存空間的時候用 delete,回收用 new[] 分配的一組對象的內存空間的時候用 delete[]

關于 new[] delete[],其中又分為兩種情況:(1) 為基本數據類型分配和回收空間;(2) 為自定義類型分配和回收空間。

對于 (1),上面提供的程序a可以證明了 delete[] delete 是等同的。
程序a
#include <stdio.h>
#define BUFF_SIZE 10240
int main(int argc, char *argv[])
{
printf("Hello, world\n";
char* p = NULL;
while(1)
{
p = new TTT[BUFF_SIZE];
printf("0x%08XH\n",p);
Sleep(5000);
delete p; //
或者delete [] p;
p = NULL;
}
return 0;
}

但是對于 (2),情況就發生了變化。請看下面的程序。
#include <stdio.h>
#define BUFF_SIZE 10240

class TTT
{
public:
TTT()
{
//aa = new char[1024];
};
~TTT()
{
//delete [] aa;
//printf("TTT destructor()\n";
};
private:
int a;
char* aa;
int inta[1024];
};

int main(int argc, char *argv[])
{
printf("Hello, world\n";
TTT* p = NULL;
while(1)
{
p = new TTT[BUFF_SIZE];
printf("0x%08XH\n",p);
delete p; //delete [] p;
p = NULL;
}
return 0;
}

大家可以自己運行這個程序,看一看 delete p1 delete[] p1 的不同結果,我就不在這里貼運行結果了。

從運行結果中我們可以看出,delete p 在回收空間的過程中,只有 p[0] 這個對象調用了析構函數,其它對象如 p[1]p[2] 等都沒有調用自身的析構函數,在析構函數中的內存釋放操作將不會被執行(引發內存泄漏),已使用內存不斷增加,這就是問題的癥結所在。如果用 delete[],則在回收空間之前所有對象都會首先調用自己的析構函數,已使用內存不會不斷增加。

基本類型的對象沒有析構函數,所以回收基本類型組成的數組空間用 delete delete[] 都是應該可以的;但是對于類對象數組,只能用 delete[]。對于 new 的單個對象,只能用 delete 不能用 delete[] 回收空間。
參考資料:http://dev.csdn.net/develop/article/38/38316.shtm

作者后續相關文章:

昨天寫了一篇關于deletedelete[]的文章,有位仁兄指出我的結論是錯誤的,那樣的結果只會在特定的編譯器程序。為了不會誤導大家,文章意見刪除。回家后仔細看了《Effective C++》,是我看書太不仔細了,雖然忘了那位仁兄是誰了,在這里還是謝謝你。現將《Effective C++》中正確的觀點、結論摘錄如下:

1.              當你使用new時,有兩件事會發生。第一,內存被配置(透過函數operator new)。第二,會有一個(或以上)的constructors針對此內存被調用。當你使用delete,也有兩件事發生:一個(或以上)的destructors會針對此內存被調用,然后內存被釋放(透過函數operator delete)。

2.              如果你使用delete是未加括號,delete便假設刪除對象是單一對象。否則便假設刪除對象是個數組。

3.              string *stringPtr1 = new string;

string *stringPtr2 = new string[100];

……

delete stringPtr1;

delete [] stringPtr2;

如果你對著stringPtr1使用“[]”形式,其結果未定義。如果你對著stringPtr2沒有使用“[]”形式,其結果亦未定義。猶有進者,這對內建型別如int者亦未定義,即使這類型別并沒有destructors

4.              因此,游戲規則很簡單,如果你在調用new時使用了[],則你在調用delete時也使用[],如果你在調用new的時候沒有[],那么你也不應該在調用時使用[]

posted on 2011-08-19 16:38 肥仔 閱讀(881) 評論(0)  編輯 收藏 引用 所屬分類: C++ 基礎

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧洲另类国产综合| 欧美福利视频在线| 亚洲第一在线视频| 久久精品一二三| 久久久精品国产99久久精品芒果| 欧美专区日韩专区| 久久国产色av| 裸体女人亚洲精品一区| 欧美激情一区二区三区高清视频 | 亚洲视频香蕉人妖| 亚洲图片欧洲图片av| 欧美片网站免费| 欧美午夜片欧美片在线观看| 国产色视频一区| 最新精品在线| 亚洲欧美激情视频在线观看一区二区三区| 亚洲欧美一区二区三区极速播放| 久久久欧美精品| 亚洲精品老司机| 亚洲午夜激情网页| 久久综合狠狠| 国产精品久久久999| 在线观看欧美精品| 亚洲综合色丁香婷婷六月图片| 久久久久五月天| 99pao成人国产永久免费视频| 久久国产精品99国产精| 欧美日韩国产大片| 激情久久五月| 午夜一区二区三区在线观看 | 久久精品中文字幕免费mv| 欧美成人一品| 午夜精品理论片| 欧美日韩一区二| 亚洲二区在线| 久久久噜噜噜久久狠狠50岁| 一区二区91| 欧美日韩爆操| 亚洲精选一区| 欧美成人精品在线| 午夜欧美不卡精品aaaaa| 欧美第一黄色网| 精品成人在线| 久久精品国产91精品亚洲| 日韩亚洲欧美成人| 欧美mv日韩mv国产网站| 午夜亚洲视频| 欧美色精品天天在线观看视频| 在线观看成人网| 久久久久青草大香线综合精品| 亚洲一区制服诱惑| 国产精品久久一区主播| 亚洲视频一二区| 中国成人亚色综合网站| 欧美日韩中文精品| 亚洲视频在线一区| 一区二区欧美亚洲| 欧美午夜在线| 香蕉成人伊视频在线观看| 亚洲视频久久| 国产毛片精品国产一区二区三区| 亚洲一区在线看| 亚洲视频欧美视频| 亚洲乱码日产精品bd| 亚洲裸体视频| 欧美体内she精视频在线观看| 9i看片成人免费高清| 亚洲精品久久嫩草网站秘色 | 麻豆精品视频在线观看| 永久91嫩草亚洲精品人人| 免费精品视频| 欧美激情一区二区三区在线| 99riav国产精品| 一区二区高清| 国产一级精品aaaaa看| 久久久久青草大香线综合精品| 欧美在线地址| 亚洲人午夜精品| 在线亚洲精品| 黄色一区二区三区| 亚洲激情一区二区| 欧美午夜一区二区| 久久久国产精品亚洲一区| 欧美一区二区在线观看| 午夜日韩视频| 亚洲日本一区二区三区| 99国产精品自拍| 国产在线播精品第三| 欧美高清在线一区| 国产精品美女在线观看| 免费观看久久久4p| 欧美精品国产一区二区| 欧美中文字幕| 免费成人激情视频| 午夜在线电影亚洲一区| 卡通动漫国产精品| 性色一区二区| 欧美岛国在线观看| 欧美一区视频| 欧美精品一区二区三区蜜臀| 午夜精品视频| 欧美激情1区2区| 久久综合九色99| 欧美午夜精品久久久久免费视| 久久综合亚洲社区| 国产精品欧美精品| 欧美黄色影院| 狠狠色2019综合网| 亚洲视频图片小说| 136国产福利精品导航网址| 中国av一区| 一本久久综合| 免费观看成人网| 久久尤物视频| 国产日韩亚洲| 99这里只有久久精品视频| 亚洲第一黄色| 久久精品30| 久久久综合网站| 国产日韩一区二区三区在线| 亚洲私人影院在线观看| 国产女优一区| 亚洲午夜精品网| 在线视频一区二区| 欧美国产大片| 日韩视频一区| 精品动漫3d一区二区三区| 亚洲午夜精品一区二区| 这里只有精品视频| 欧美大片在线观看一区| 国产一区二区三区丝袜| 午夜精品久久久久久久| 午夜亚洲视频| 国产精品青草久久久久福利99| 一区二区毛片| 午夜精品999| 国产精品国产三级国产专播品爱网| 亚洲精品国产系列| 99视频精品全国免费| 欧美va亚洲va国产综合| 欧美大片在线影院| 亚洲美女黄网| 国产精品mm| 亚洲欧美大片| 久久久国产精品一区| 在线观看日韩专区| 欧美二区在线看| 99国产精品一区| 香蕉成人啪国产精品视频综合网| 国产精品视频精品| 久久精品国内一区二区三区| 蜜桃久久精品乱码一区二区| 亚洲激情av在线| 欧美激情在线狂野欧美精品| 亚洲精品一区二区三区婷婷月 | 久久精品一区| 亚洲国产综合91精品麻豆| 欧美大片在线看| 一区电影在线观看| 国产精品免费aⅴ片在线观看| 午夜亚洲伦理| 亚洲成在线观看| 亚洲午夜av| 韩国一区二区在线观看| 欧美金8天国| 午夜性色一区二区三区免费视频| 农夫在线精品视频免费观看| 一区二区三区免费网站| 国产香蕉97碰碰久久人人| 老司机精品视频一区二区三区| 亚洲精品在线一区二区| 久久精品欧美| 一区二区三欧美| 黄色精品一区| 欧美日韩一区不卡| 久久在线视频在线| 亚洲一区成人| 亚洲激情校园春色| 久久五月天婷婷| 亚洲欧美在线高清| 99riav久久精品riav| 精品成人免费| 国产精品日本| 欧美精品九九99久久| 久久国产精品亚洲va麻豆| 亚洲人成在线观看| 久久综合福利| 欧美亚洲网站| 亚洲视频一二三| 亚洲日本理论电影| 黄色资源网久久资源365| 国产精品美女久久久久av超清| 美女爽到呻吟久久久久| 欧美亚洲免费在线| 亚洲午夜高清视频| 日韩视频免费| 亚洲精品在线看| 国产综合自拍| 欧美插天视频在线播放| 久久www免费人成看片高清|