我有一个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);
这两个都发生在主要功能中。
答案 0 :(得分:3)
由于neuu
已使用new[]
创建,因此您应使用delete[]
代替delete
。