我是编程的新手。请帮我解决这个问题。
当我执行此程序时,程序将崩溃。有人能告诉我坠机的确切原因吗?
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
struct s
{
char *str;
};
std::vector<struct s> v;
int main()
{
struct s s1;
strcpy(s1.str,"hi");
v.push_back(s1);
strcpy(s1.str,"hello");
v.push_back(s1);
strcpy(s1.str,"How are you");
v.push_back(s1);
strcpy(s1.str,"AMAZING");
v.push_back(s1);
for (int i=0;i<(int)v.size();i++)
{
printf("%s\n",v[i].str);
}
return 0;
}
我正在devc ++中编译它。
请帮助。
最佳答案
没有为str
分配任何内存,并且struct s
为violating the rule of three:请改用std::string
。
声明struct s
类型时无需指定s
(在C语言中需要这样做),只需使用s
:
std::vector<s> v;
s s1;
通过提供构造函数,可以使
struct s
的使用更加方便:struct s
{
s(const std::string& a_s) : str(a_s) {}
std::string str;
};
v.push_back(s("hi"));
关于c++ - 程序崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11736888/