动态分配std::string数组
Dynamically allocate array of std::string
我想动态分配一个std::string
数组。有一个函数要分配。在整个程序中,我想调用这个函数多少次就调用多少次。如果指向数组的指针已经被分配了,我想先释放内存,然后再分配新的内存。
这是我尝试的:
std::string *names;
bool already_allocated = false;
void allocate( int n)
{
if( already_allocated)
{
delete names;
}
names = new std::string[n];
already_allocated = true;
}
int main()
{
allocate(5);
allocate(6);
return 0;
}
但是在delete names
allocate()
调用时出现了运行错误我误解了什么吗?
您必须使用delete [] names;
,因为您想要删除字符串数组,delete names;
删除单个对象。
您不能在数组上调用delete names
,您应该使用
delete[] names
。
用std::vector<std::string>
代替names
数据结构怎么样?
当您使用new分配内存时,您可以使用delete操作符,但是当您使用new[]分配内存时,为了避免内存泄漏,请使用delete[]操作符来删除为数组分配的内存。
delete[] names
相关文章:
- 创建 std::string 的二维数组的最佳做法
- <string> 如何在使用 SWIG 时将 int 数组和 List 作为参数传递给 C# C++
- 使用 .data() 将字符数组转换为 std::string 不会转换整个数组
- 如何正确删除 std::string 数组
- 将空填充但不以空结尾的固定长度字符数组转换为 std::string 的最佳方法
- "Error reading character of string" 为哈希动态增长数组的问题 (C++)
- 将C 数组写成文件,避免创建std :: String
- 使用STD :: String和字符数组之间的选择
- 将字符数组转换为 std::string 以传递到 std::bitset seg 错误
- 将 std::string 重新解释为无符号的 int 数组
- std::string 参数是如何从原始字符数组文本传递的
- C++将向量转换为<string>无符号字符数组
- 数据结构对齐:为什么Char和STD :: String的数组不同
- 尝试使用Huffman String代码更新数组
- C++:矢量<string>到字符数组
- 如何将包含 '