C++動(dòng)態(tài)分配內(nèi)存(new)和撤銷內(nèi)存(delete)

在軟件開發(fā)過程中蝇刀,常常需要?jiǎng)討B(tài)地分配和撤銷內(nèi)存空間骏庸,例如對(duì)動(dòng)態(tài)鏈表中結(jié)點(diǎn)的插入與刪除。

在C語言中是利用庫(kù)函數(shù)malloc和free來分配和撤銷內(nèi)存空間的奋单。

C++提供了較簡(jiǎn)便而功能較強(qiáng)的運(yùn)算符new和delete來取代malloc和free函數(shù)。

注意: new和delete是運(yùn)算符猫十,不是函數(shù)览濒,因此執(zhí)行效率高。

雖然為了與C語言兼容拖云,C++仍保留malloc和free函數(shù)贷笛,但建議用戶不用malloc和free函數(shù),而用new和delete運(yùn)算符宙项。new運(yùn)算符的例子:
new int; //開辟一個(gè)存放整數(shù)的存儲(chǔ)空間乏苦,返回一個(gè)指向該存儲(chǔ)空間的地址(即指針)
new int(100); //開辟一個(gè)存放整數(shù)的空間,并指定該整數(shù)的初值為100,返回一個(gè)指向該存儲(chǔ)空間的地址
new char[10]; //開辟一個(gè)存放字符數(shù)組(包括10個(gè)元素)的空間汇荐,返回首元素的地址
new int[5][4]; //開辟一個(gè)存放二維整型數(shù)組(大小為5*4)的空間洞就,返回首元素的地址
float *p=new float (3.14159); //開辟一個(gè)存放單精度數(shù)的空間,并指定該實(shí)數(shù)的初值為//3.14159掀淘,將返回的該空間的地址賦給指針變量p

new運(yùn)算符使用的一般格式為:


new 類型 [初值];

用new分配數(shù)組空間時(shí)不能指定初值旬蟋。如果由于內(nèi)存不足等原因而無法正常分配空間,則new會(huì)返回一個(gè)空指針NULL革娄,用戶可以根據(jù)該指針的值判斷分配空間是否成功咖为。

delete運(yùn)算符使用的一般格式為:
delete [ ] 指針變量

例如要撤銷上面用new開辟的存放單精度數(shù)的空間(上面第5個(gè)例子),應(yīng)該用
delete p;
前面用“new char[10];”開辟的字符數(shù)組空間稠腊,如果把new返回的指針賦給了指針變量pt,則應(yīng)該用以下形式的delete運(yùn)算符撤銷該空間:
delete [] pt; //在指針變量前面加一對(duì)方括號(hào)鸣哀,表示是對(duì)數(shù)組空間的操作

【例7】開辟空間以存放一個(gè)結(jié)構(gòu)體變量架忌。

#include <iostream>
#include <string>     
using namespace std;
struct Student  //聲明結(jié)構(gòu)體類型Student
{
   string name;
   int num;
   char sex;
};
int main( )
{
   Student *p;  //定義指向結(jié)構(gòu)體類型Student的數(shù)據(jù)的指針變量
   p=new Student;  //用new運(yùn)算符開辟一個(gè)存放Student型數(shù)據(jù)的空間
   p->name="Wang Fun";  //向結(jié)構(gòu)體變量的成員賦值
   p->num=10123;
   p->sex='m';
   cout<<p->name<<endl<<p->num
   <<endl<<p->sex<<endl;  //輸出各成員的值
   delete p;  //撤銷該空間
   return 0;
}

運(yùn)行結(jié)果為:Wang Fun 10123 m圖7.11 為new student開辟的空間。

在動(dòng)態(tài)分配/撤銷空間時(shí)我衬,往往將這兩個(gè)運(yùn)算符和結(jié)構(gòu)體結(jié)合使用叹放,是很有效的∧痈幔可以看到:要訪問用new所開辟的結(jié)構(gòu)體空間井仰,無法直接通過變量名進(jìn)行,只能通過指針p進(jìn)行訪問破加。如果要建立一個(gè)動(dòng)態(tài)鏈表俱恶,必須從第一個(gè)結(jié)點(diǎn)開始,逐個(gè)地開辟結(jié)點(diǎn)并輸入各結(jié)點(diǎn)數(shù)據(jù)范舀,通過指針建立起前后相鏈的關(guān)系合是。

NdkDemo代碼已上傳至Github

如有不正支出,歡迎留言交流!
我的GitHub
我的CSDN
我的簡(jiǎn)書
開發(fā)筆記

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锭环,一起剝皮案震驚了整個(gè)濱河市聪全,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辅辩,老刑警劉巖难礼,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異玫锋,居然都是意外死亡蛾茉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門景醇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來臀稚,“玉大人,你說我怎么就攤上這事三痰“伤拢” “怎么了窜管?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)稚机。 經(jīng)常有香客問我幕帆,道長(zhǎng),這世上最難降的妖魔是什么赖条? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任失乾,我火速辦了婚禮,結(jié)果婚禮上纬乍,老公的妹妹穿的比我還像新娘碱茁。我一直安慰自己,他們只是感情好仿贬,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布纽竣。 她就那樣靜靜地躺著,像睡著了一般茧泪。 火紅的嫁衣襯著肌膚如雪蜓氨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天队伟,我揣著相機(jī)與錄音穴吹,去河邊找鬼。 笑死嗜侮,一個(gè)胖子當(dāng)著我的面吹牛港令,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播棘钞,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼缠借,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了宜猜?” 一聲冷哼從身側(cè)響起泼返,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎姨拥,沒想到半個(gè)月后绅喉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叫乌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年柴罐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片憨奸。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡革屠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情似芝,我是刑警寧澤那婉,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站党瓮,受9級(jí)特大地震影響详炬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寞奸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一呛谜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧枪萄,春花似錦隐岛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至逻悠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間韭脊,已是汗流浹背童谒。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沪羔,地道東北人饥伊。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蔫饰,于是被迫代替她去往敵國(guó)和親琅豆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • C語言中內(nèi)存分配 在任何程序設(shè)計(jì)環(huán)境及語言中篓吁,內(nèi)存管理都十分重要茫因。在目前的計(jì)算機(jī)系統(tǒng)或嵌入式系統(tǒng)中,內(nèi)存資源仍然是...
    一生信仰閱讀 1,148評(píng)論 0 2
  • 1. malloc()函數(shù) 1.1 malloc的全稱是memory allocation杖剪,中文叫動(dòng)態(tài)內(nèi)存分配冻押。 ...
    Pitfalls閱讀 1,988評(píng)論 0 5
  • (JG-2014-08-20)(前半部分經(jīng)過網(wǎng)上多篇文章對(duì)比整理)(后半部分根據(jù)ExceptionalCpp、C+...
    JasonGao閱讀 5,597評(píng)論 2 23
  • 轉(zhuǎn)載:http://www.cnblogs.com/fly1988happy/archive/2012/04/26...
    冰吉凌閱讀 485評(píng)論 0 4
  • Composer在windows下的安裝使用 Composer是 PHP 用來管理依賴(dependency)關(guān)系...
    codinger閱讀 227評(píng)論 0 0