[英]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.