c++ - 程序崩溃

扫码查看

我是编程的新手。请帮我解决这个问题。

当我执行此程序时,程序将崩溃。有人能告诉我坠机的确切原因吗?

#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 sviolating 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/

10-11 23:14
查看更多