删除指针c ++

时间:2015-12-31 19:15:25

标签: c++ pointers

我有一个c ++程序,如果用户输入更多元素,其中一部分指针的大小会增加。此指针具有与结构条目关联的类型,并且增加指针大小的函数为

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);

这两个都发生在主要功能中。

1 个答案:

答案 0 :(得分:3)

由于neuu已使用new[]创建,因此您应使用delete[]代替delete