c 中指標可以析構嗎,就是能不能像釋放物件一樣操作?

2025-01-24 11:50:21 字數 1761 閱讀 2232

1樓:網友

指標本身沒有析構的概念,直接賦值null就可以了,如果指標指向的是普通變數,函式退出後會自動釋放,包括指標本身,實際上指標不賦值null也沒問題,只要你確保同一名稱空間。

下其他**不再去訪問它即可,置null的意義在於在**量大的情況下,防止誤操作降低出錯率。

但是如果指標指向的是由new申請的物件、陣列,則需要主動用delete釋放。因為動態分配的記憶體,編譯器。

是無法預知的,從而無法自動釋放,這樣會產生記憶體洩漏。

2樓:匿名使用者

c++的裸指標本質上就是乙個64位或者32位的整數。裸指標本身不需要析構。

如果你指指標指向的物件的析構,是可以的。通過指標呼叫物件的解構函式就可以了。

3樓:品茗清新

這個解構函式 他施放的是類的成員變數 拋開別的不說 他施放的是 你new出來的那個物件的指標。,.所以其實他並沒有施放這根new出來的物件 ,.

所以你需要呼叫 delete 在解構函式里 手動釋放。第二個問題 程式結束了 你的new出來的堆裡的記憶體一定會被施放 這是作業系統保證的 不是你的程式的事了 ..

4樓:最大的寶寶

瞭解一下智慧型指標的概念,可能是你需要的知識。

c++問題求教!關於「類」解構函式和物件指標

5樓:明早3點起

1:這段**記憶體洩漏了。

2:解構函式是相對於建構函式而已的,建構函式是建立物件,而解構函式是釋放物件。也就是說,你自己用new關鍵字在堆上申請的記憶體空間,需要使用delete釋放,否則會造成記憶體洩漏。

3:new是在堆上申請一段記憶體位址,存放物件。相對於棧而言,棧是程式自己申請,執行後自己釋放,而堆上的記憶體是程式設計師自己申請,自己釋放,如果沒釋放,會造成記憶體洩漏。

4:char* name=new char[strlen(pname)+1]; //strlen和 strcpy是c風格字串的函式,前者是求陣列長度,後者是負責陣列。

6樓:小夏

記憶體洩露就是你申請了一段記憶體空間,而你又沒有用。別人也用不了,而且程式結束後這段記憶體空間依舊被你霸佔著,,也就是這段記憶體以後永遠都用不了了。

c++ 複製與析構問題

7樓:物理公司的

在c++中,下面三種物件需要呼叫複製建構函式:

1) 乙個物件作為函式引數,以值傳遞的方式傳入函式體;

2) 乙個物件作為函式返回值,以值傳遞的方式從函式返回;

3) 乙個物件用於給另外乙個物件進行初始化(常稱為賦值初始化);

那麼++i只是單獨呼叫了operator++函式,它又沒有傳遞給別的物件,怎麼就呼叫複製建構函式了呢?

t& fun()

返回的是類的引用,因此沒呼叫複製建構函式。

t fun()

這裡就調到複製建構函式了。

8樓:網友

複製建構函式是因為你的++操作符的返回值是num,這樣返回的是乙個臨時變數,將自身拷貝複製給這個臨時變數,臨時變數生成之後,立馬又被銷燬了,所以就有了解構函式。

嚴格來說是你寫錯了,應該寫成 num & operator ++這樣就不會有了。因為返回的是引用。

9樓:韓靚

過載了自增操作operator++,因為函式的返回值在棧中,程式就建立了乙個匿名物件。將函式改為num& operator++(const num&s),該輸出消失。

櫻花能不能扦插,櫻花可以扦插嗎

1 枝插櫻花用一般扦插法不易生根,即使生根,成活率也較低。所以必須在版扦插前 進行埋藏處理才有權較好效果。處理方法 1月份選平直的枝條切成30釐米長的枝段,30 50枝綁成一束,頂端向上埋入土中,深度以不見頂端為宜,至3月見切口處生成愈傷組織後挖出,將枝條剪成7 8釐米的小段,插於扦插床上。2 根插...

貓能不能洗澡,貓咪可以洗澡嗎

如何給貓咪洗澡。貓咪是喜愛清潔的動物,一般的短毛貓沒有必要人為洗澡。但對於一些類似波斯 喜馬拉雅貓之類的長毛貓,自身的清潔能力較差,加上毛長容易藏汙納垢和生長外寄生蟲以及細菌等,就有必要定時幫其洗澡了。給貓咪洗澡先要準備好動物專用的浴液 浴盆 浴巾 梳子 脫脂棉球 小鑷子 吹風機等用具。一般來說,從...

考研英語一34,可以調劑到C區嗎?能不能夠線啊?我考研今出分了,英語一34,總分311,報考B區

大哥 老早就沒c區了 只有ab區 具體等國家線吧 考研總分沒過a區國家線,b區國家線夠了可以調劑區嗎 可以調劑 通俗講,所謂abc區是指你所報考學校所處的地理位置,a區最好,包括北京,上海,江蘇等較發達地區,bc區依次稍偏遠。只要分數線夠了,a可以在ab區裡調劑,過b線可以在bc區調,過c線就只能在...