gpt4 book ai didi

c++ - 删除一个指针c++

转载 作者:行者123 更新时间:2023-11-30 02:34:26 25 4
gpt4 key购买 nike

我有一个 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是要增加的指针,size是它的初始大小。在此函数结束时,我想删除输入指针neuu,以释放内存。

问题是:如果我有这个序列

delete neuu;
return new_neu;

而不是我在上面的代码中使用的那个,编译器在接受两个用户输入并打印错误后停止

error for object 0x1002042b8: pointer being freed was not allocated

那我怎样才能删除指针呢?

编辑:一些用户询问最初 neuu 是如何分配的。最初我有

Entry *neu = new Entry[1];

每当用户尝试输入第二项时,都会调用一个函数

   neu = size_increase(neu,size);

这两个都发生在主函数中。

最佳答案

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

关于c++ - 删除一个指针c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34550736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com