gpt4 book ai didi

C++ 删除 [] 崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 16:28:22 27 4
gpt4 key购买 nike

我正在编写一个 C++ 程序,它将字符串存储在一个字符串数组中,当数组已满时,我使用下面的代码调整数组的大小以便为更多项腾出空间。但有时(并非总是)它会在“delete[] temp;”时崩溃。线,我不知道为什么以及如何解决它。请帮忙。

我搜索了很多,但在任何地方都找不到答案。当我调试时它说“无效指针”但是当我之前在那里存储数据并且还没有释放它时它怎么会无效呢?

这是我的代码:

if(item_cnt >= (arr_size - 1))
{
int oldsize = arr_size;
string * temp;
arr_size *= 2;
temp = arr;
arr = new string [arr_size];
memcpy(arr, temp, oldsize * sizeof(temp));
delete[] temp;
}

最佳答案

除非您绝对必须坚持当前的方法,否则我建议您使用 vector 来保存字符串。它将为您管理所有内存。

这是一个例子:

#include <vector>
#include <string>
int main()
{
std::vector<std::string> arrayOfStrings;

arrayOfStrings.push_back("Hello World!"); // To Add Items
string value = arrayOfString.at(<some index>); // To Retrieve an Item you can also use the [] operator instead of the at method

return 0;
}

关于C++ 删除 [] 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9824736/

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