gpt4 book ai didi

c++ - std::vector - 如何释放 vector 中 char* 元素的内存?

转载 作者:太空狗 更新时间:2023-10-29 23:26:42 25 4
gpt4 key购买 nike

考虑以下 C++ 代码:

using namespace std;
vector<char*> aCharPointerRow;
aCharPointerRow.push_back("String_11");
aCharPointerRow.push_back("String_12");
aCharPointerRow.push_back("String_13");
for (int i=0; i<aCharPointerRow.size(); i++) {
cout << aCharPointerRow[i] << ",";
}
aCharPointerRow.clear();

aCharPointerRow.clear(); 行之后,aCharPointerRow 中的字符指针元素应该全部删除。

上述 C++ 代码中是否存在内存泄漏?我是否需要显式释放分配给 char* 字符串的内存?如果是,怎么办?

感谢任何建议。

最佳答案

上面的C++代码有内存泄漏吗?
没有内存泄漏。

因为您从未使用过new,所以不需要调用delete。如果首先分配了动态内存,则只需取消分配动态内存。

请注意,理想情况下,您应该使用 std::string 的 vector 。

std::vector<std::string> str;
str.push_back("String_11");
str.push_back("String_12");
str.push_back("String_13");

你可以使用 std::string.c_str() 如果您需要获取底层字符指针 (char *),很多 C api 都希望将其作为参数。

关于c++ - std::vector - 如何释放 vector 中 char* 元素的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9680421/

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