gpt4 book ai didi

c++ - 将 char 指针存储在 vector 中

转载 作者:行者123 更新时间:2023-11-28 01:17:21 26 4
gpt4 key购买 nike

在极少数情况下,我的程序崩溃了,我不知道为什么。我认为这可能与我如何在 vector 中存储字符指针有关。

vector<char*> vec;

// here i store text for later
void pushToVector(const char *text) {
char *t = new char[strlen(text)+1];
strcpy(t, text);
vec.push_back(t);
}

// now i want to print the first element and then erase it
void print() {
if (vec.size() < 1) return;
printf("print: %s", vec.front());
char *t = vec.front();
vec.erase(vec.begin(), vec.begin()+1);
delete[] t;
}

这会一直有效吗?还是我做错了什么?

最佳答案

代码似乎没问题,尽管它是相当冒险的代码。这些是我看到的不安全点:

  • 你没有检查参数text是否真的是一个以null结尾的字符串
  • 使用纯指针
  • 堆上的字符串对象没有明确的所有权(我不希望 print 函数删除某些东西)

除非你被绑定(bind)到 C 风格的字符串,否则我强烈建议使用 std::string

关于c++ - 将 char 指针存储在 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58241268/

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