繁体   English   中英

将 char 指针存储在向量中

[英]storing char pointers inside a 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是否真的是一个以空字符结尾的字符串
  • 使用纯指针
  • 没有明确的字符串 object 在堆上的所有权(我不希望print function 删除某些东西)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM