簡體   English   中英

刪除指針c ++

[英]Delete a pointer c++

我有一個c ++程序,如果用戶輸入更多元素,其中一部分指針的大小會增加。 該指針具有與結構Entry相關聯的類型以及增加指針大小的函數

Entry *size_increase(Entry *neuu, int *size){
   *size = *size+10;
   Entry *new_neu = new Entry[*size];
   for (int i=0; i<*size; ++i) {
       new_neu[i]=neuu[i];
   }

   return new_neu;
}

指針neuu是要增加的指針, 大小是其初始大小。 在這個函數的最后我想刪除輸入指針neuu來釋放內存。

問題是:如果我有這個序列

delete neuu;
return new_neu;

而不是我在上面的代碼中的那個,編譯器在獲取兩個用戶輸入后停止並打印錯誤

對象0x1002042b8的錯誤:未分配被釋放的指針

那我怎么能刪除指針呢?

編輯:有些用戶詢問最初如何分配neuu。 最初我有

Entry *neu = new Entry[1];

並且每當用戶嘗試輸入第二項時,函數被稱為

   neu = size_increase(neu,size);

這兩個都發生在main函數中。

由於你的neuu是用new[]創建的,你應該使用delete[]而不是delete

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM