删除一个指针c++

Delete a pointer c++

本文关键字:一个 指针 c++ 删除      更新时间:2023-10-16

我有一个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);

这两者都发生在主函数内部。

因为neuu是用new[]创建的,所以应该使用delete[]而不是delete