亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++ new/delete相關知識點詳細解析

2020-01-26 15:54:16
字體:
來源:轉載
供稿:網友

每個程序在執行時都占用一塊可用的內存空間,用于存放動態分配的對象,此內存空間稱為程序的自由存儲區(free store)或堆(heap)。C語言用一堆標準庫函數malloc和free在自由存儲區中分配存儲空間,而C++則用new和delete表達式實現相同的功能。

一、new和delete創建和釋放動態數組:
數組類型的變量有三個重要的限制:數組長度固定,在編譯時必須知道其長度,數組只在定義它的語句內存在。動態數組:長度固定,編譯時不必知道其長度,通常是運行時確定;一直存在,直到程序顯示釋放它。

1、動態數組的定義:數組變量通過指定類型、數據名和維數來定義。而動態分配數組時,只需指定類型和數組長度,不必為數組對象命名,new表達式返回指向新分配數組的第一個元素的指針:int*pia=new int[10];在自由存儲區中創建的數組對象沒有名字,只能通過其地址間接訪問堆中的對象。

2、初始化動態分配的數組:若數組元素具有類類型,將使用該類的默認構造函數初始化;若數組元素是內置類型,則無初始化。也可跟在數組長度后面的一堆空圓括號,對數組元素做值初始化。

string *psa=newstring[10];  //array of 10 empty strings
int *pia=newint[10];  //array of 10 uninitializedints
int *pia2=newint[10]();  //array of 10 zero

對于動態分配的數組,其元素只能初始化為元素類型的默認值,而不能像數組變量一樣,用初始化列表為數組元素提供各不相同的初值。

3、const對象的動態數組:若在堆中創建的數組存儲了內置類型的const對象,則必須為這個數組提供初始化:因數組元素都是const對象,無法復制。

const int*pci_ok=new const int[100]();

C++允許定義類類型的const數組,但該類型必須提供默認構造函數。

已創建的常量元素不允許修改,所以此類數組用處不大。

4、允許動態分配空數組:動態分配數組,多是由于編譯時不知道數組長度。
size_t  n=get_size();    int*p=new int[n];

C++雖然不允許定義長度為0的數組變量,但明確指出,調用new創建長度為0的數組是合法的。new返回有效的非零指針。該指針不能與new返回的其他指針不同,不能進行解引用操作,因它沒指向任何元素。允許的操作:比較運算。

5、動態空間的釋放:程序員必須顯示將其占用的存儲空間返還給程序的自由存儲區。C++語言為指針提供delete []表達式釋放指針所指向的數組空間。

delete [] pia;[]告訴編譯器該指針指向的是堆中的數組,而非單個對象,若遺漏,編譯器無法發現。

二、new和delete創建和釋放單個對象
定義變量時,必須指定其數據類型和名字。而動態創建對象時,只需指定其數據類型。new返回指向新創建對象的指針,通過該指針來訪問此對象。

1、動態創建對象的初始化:int *pi=new int(1024)

2、動態創建對象的默認初始化:若不提供顯式初始化,與函數內定義的變量初始化方式相同,類類型->默認構造函數;內置類型->無初始化。同樣可做值初始化:

int *pi=newint();值初始化的()必須置于類型名后,而非變量后,int x()是聲明函數。

3、撤銷動態創建的對象:程序員必須顯示將該對象占用的內存返回給自由存儲區。delete,若指針指向不是用new分配的內存地址,則對該指針使用delete非法。

int i;  int *pi=&i;  delete pi;//編譯器不能斷定一個指針指向什么類型的對象,因此大部分編譯器仍能通過(VS2005編譯通過,執行到該處報錯)。

4、零指針的刪除:int *ip=0; delete ip;若指針值為0,則delete合法。

5、delete后,重設指針值:delete p;刪除指針后,p成為懸垂指針。懸垂指針指向曾經存放對象的內存,但該對象已不存在,引用該內存報錯。所以一旦刪除指針所指向的對象,立即將指針置為0。

6、const對象的動態分配和回收:創建時初始化,且一經初始化,其值不可修改。

const int*pci=new const int(1024);new表達式返回int型const對象的指針。所以只能賦給指向const的指針。內置類型對象或未提供默認構造函數的類類型對象必須顯示初始化。

刪除const對象:delete pci;

三、與動態內存分配相關的三種常見程序錯誤:
1、刪除指向動態分配內存的指針失敗,稱為memory leak。一般需等程序運行一段時間,耗盡內存時,才顯露出來。

2、讀寫已刪除的對象。若刪除指針所指對象后,置指針值為0,易檢查出此類錯誤。

3、對同一個內存空間使用兩次delete表達式。第二次delete時,自由存儲區可能被破壞。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕一区二区精品| 亚洲欧美精品suv| 久久这里有精品| 国产精品久久久久久亚洲调教| 日韩精品在线免费播放| 欧洲成人免费视频| 国产91精品久久久久| 精品国偷自产在线视频99| 日韩专区在线观看| 国产欧美在线视频| 国产日产欧美精品| 欧洲永久精品大片ww免费漫画| 欧美三级免费观看| 一区二区国产精品视频| 国产成人一区二区三区小说| 69av成年福利视频| 国产精品网站入口| 亚洲欧美日韩天堂一区二区| 亚洲精品欧美日韩专区| 国内偷自视频区视频综合| 一区二区三区高清国产| 欧美日本在线视频中文字字幕| 亚洲一级免费视频| 久久久精品中文字幕| 亚洲综合一区二区不卡| 国产成人精品电影| 亚洲午夜精品久久久久久久久久久久| 亚洲精品v欧美精品v日韩精品| 精品久久在线播放| 亚洲免费中文字幕| 精品久久久久久电影| 在线观看久久av| 成人黄色免费片| 亚洲欧美www| 在线电影av不卡网址| 亚洲视频一区二区三区| 欧美wwwxxxx| 丝袜亚洲另类欧美重口| 久久精品国产久精国产思思| 久久久久国产精品免费网站| 中文字幕日韩欧美| 国产精品久久综合av爱欲tv| 国产91精品视频在线观看| 国内精品久久久久影院 日本资源| 精品久久久在线观看| 日韩精品视频免费在线观看| 亚洲色图15p| 亚洲综合色激情五月| 97免费视频在线播放| 亚洲图片在线综合| 国产精品无av码在线观看| 久操成人在线视频| 国产精品精品久久久久久| 精品成人国产在线观看男人呻吟| 亚洲欧美国产日韩中文字幕| 国产精品福利网| 亚洲xxx视频| 国外日韩电影在线观看| 国产做受高潮69| 国产精品美女在线观看| 久久免费少妇高潮久久精品99| 国产精品激情av电影在线观看| 伊人亚洲福利一区二区三区| 欧美大片第1页| 久久99久久99精品免观看粉嫩| 久久久精品欧美| 色爱av美腿丝袜综合粉嫩av| 欧美一区二三区| 欧洲s码亚洲m码精品一区| 国产热re99久久6国产精品| 久久99青青精品免费观看| 高清欧美性猛交| 日韩视频在线观看免费| 97精品久久久中文字幕免费| 久久免费观看视频| 日韩成人中文电影| 中文欧美在线视频| 欧美在线视频免费观看| 精品国产一区二区三区久久久狼| 精品国产一区久久久| 成人黄色影片在线| 538国产精品一区二区免费视频| 国产91精品高潮白浆喷水| 欧美一区二区色| 欧美精品www在线观看| 久久影院中文字幕| 亚洲美女中文字幕| 午夜精品三级视频福利| 亚洲无亚洲人成网站77777| 欧美精品videos| 亚洲色图第三页| 欧美电影在线观看网站| 国产欧美欧洲在线观看| 疯狂欧美牲乱大交777| 亚洲国产精品热久久| 国产精品久久在线观看| 黑人巨大精品欧美一区二区一视频| 日韩一区二区欧美| 中文字幕亚洲一区二区三区五十路| 在线日韩第一页| 亚洲偷熟乱区亚洲香蕉av| 国产成人精品电影| 精品视频久久久| 高清视频欧美一级| 欧美电影免费观看高清| 欧美性猛交xxxx免费看漫画| 国产精品免费久久久| 亚洲欧美国产制服动漫| 久久精品国产69国产精品亚洲| 91麻豆国产语对白在线观看| 日韩精品在线观看一区| 欧美激情精品久久久久久| 高清一区二区三区日本久| 久久99精品久久久久久琪琪| 丝袜一区二区三区| 亚洲精品国产精品乱码不99按摩| 日本一本a高清免费不卡| 在线丨暗呦小u女国产精品| 不用播放器成人网| 国产精品专区一| 久久天天躁日日躁| 欧美一性一乱一交一视频| 992tv成人免费影院| 2019中文字幕在线免费观看| 亚洲欧美激情四射在线日| 亚洲一品av免费观看| 久久精品久久久久久| 热99精品只有里视频精品| 色综合天天狠天天透天天伊人| 欧美最猛性xxxxx亚洲精品| 亚洲成人av中文字幕| 欧美性xxxx极品hd欧美风情| 欧美激情亚洲自拍| 日韩在线观看av| 日本一区二区在线播放| 久久激情视频久久| 欧美一级电影久久| 成人黄色av网| 亚洲精品小视频在线观看| 欧美午夜精品伦理| 国产视频精品va久久久久久| 欧洲日本亚洲国产区| 成人福利网站在线观看11| 成人黄色中文字幕| 久久99精品久久久久久噜噜| 欧美日韩亚洲激情| 日本午夜精品理论片a级appf发布| 青草热久免费精品视频| 久久91超碰青草是什么| 91精品国产自产在线| 美日韩精品免费观看视频| 国产精品久久久久久网站| 欧美一级免费视频| 亚洲天堂久久av| 美女av一区二区三区| 欧美性生交xxxxxdddd| 欧美性理论片在线观看片免费| 久久久久久欧美| 久久久久久亚洲精品不卡| 成人精品在线观看| 日韩欧美国产一区二区| 国产日韩中文字幕在线| 欧美孕妇与黑人孕交| 欧美乱妇高清无乱码|