使用指针时的核心转储

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)

谢谢

Pup*_*ppy 8

更换char*std::string与下降的线条newdelete,你将不再有问题.

这段代码失败是因为,主要是,当你指定指针时,它不会将内容复制到指向的东西 - 它只是改变了指针指向的东西.

通常,始终使用类来拥有资源 - 在本例中为字符串.令人高兴的是,该标准为您提供了这样一个课程.

  • 嗯.一方面,是的,这个答案有帮助.但另一方面,在解释的方向给出*some*指针(没有双关语)是有益的.或不.OP可能没有达到对指针的理解至关重要的水平. (3认同)