adi*_*un1 0 c++ struct pointers
我正在使用C++中的结构编写一个简单的代码,但在使用g ++进行编译时,我遇到了核心转储错误.如果我使用cin在下面的player.name中输入"Mario",则不会报告错误.谁能解释一下出了什么问题?
struct character
{
char *name;
};
int main()
{
character player;
player.name = new char[10];
player.name = "Mario";
cout<<player.name<<endl;
delete player.name;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
谢谢
更换char*用std::string与下降的线条new和delete,你将不再有问题.
这段代码失败是因为,主要是,当你指定指针时,它不会将内容复制到指向的东西 - 它只是改变了指针指向的东西.
通常,始终使用类来拥有资源 - 在本例中为字符串.令人高兴的是,该标准为您提供了这样一个课程.