[英]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
是否真的是一个以空字符结尾的字符串print
function 删除某些东西) 除非您被绑定到 C 风格的字符串,否则我强烈建议您使用std::string
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.