第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++中 函數(shù)中定義的局部指針需要delete嗎?

C++中 函數(shù)中定義的局部指針需要delete嗎?

胡子哥哥 2019-02-12 10:11:45
例如:void f(){double *p; /***///delete [] p ;是否需要?}函數(shù)結(jié)束后,這個指針p需要手動釋放嗎如果定義成double *p = new double;需要delete 嗎?
查看完整描述

3 回答

?
開心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個贊

C++無論何種數(shù)據(jù),是否要delete關(guān)鍵看其空間是否使用new分配的。
1,函數(shù)沖定義的局部變量指針,單純是一個局部變量是不用delete;
2,C++ 如果類中有一個指針數(shù)據(jù)成員,而沒有用new, 析構(gòu)函數(shù)也是不用delete的;
在類或函數(shù)中,int* ,char* 這些只要不是new的,也同樣不用釋放,系統(tǒng)會自動把他們占的內(nèi)存釋放掉,只有new的才會手動的去delete
原理:
int*, char* ,這些定義是局部變量,存在于棧上,比如int *p;p在棧上,而且p的值也是棧的一個地址。
但是當(dāng)int *p = new int ;這時候,p這個變量是在棧上的。但是p的值是一個地址,這個地址是堆上的一個地址。如果不delete p;那么,這個地址會一直被占用著,不能被其他的對象所使用,所以我們用完這個地址,要把這個地址釋放掉。
因此棧的空間會自動釋放,而堆里的空間必須手動釋放。

查看完整回答
反對 回復(fù) 2019-03-22
?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個贊

是否需要對指針delete取決于指針指向的內(nèi)存是否是用new操作符申請的。 用了new表示動態(tài)分配了內(nèi)存,需要用delete將內(nèi)存還給系統(tǒng)。 對于不是動態(tài)申請的內(nèi)存,在對象聲明周期結(jié)束后就會自動刪除,不需要delete。

查看完整回答
反對 回復(fù) 2019-03-22
?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個贊

當(dāng)然需要。凡是使用new申請的內(nèi)存,系統(tǒng)都不會自動釋放的,都需要你手動delete,如果申請的是數(shù)組,也就是new [] ,就需要對用的手動delete[] .
不論在哪里,都需要,不分局部還是全局。

查看完整回答
反對 回復(fù) 2019-03-22
  • 3 回答
  • 0 關(guān)注
  • 5030 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號