为什么设置const char *会给出分段错误?

时间:2015-08-23 17:33:12

标签: c++ pointers segmentation-fault

我有这个简单的功能

 struct MyException : public exception
{
    const char *errorMessage = NULL;

    void SetMessage(const char* message)
    {
        errorMessage = message;
    }

  const char * what () const throw ()
  {
    return errorMessage;
  }
};
struct MyException *socketException;

当我打电话

socketException->SetMessage("socket connection error");
       throw *socketException;

我在将消息设置为errorMessage的行处获得了分段错误。我错过了一些非常基本的东西,但我无法理解。我检查了有关分段错误的其他问题,我知道它有时是关于指针的错误。但我仍然没有那样做。

1 个答案:

答案 0 :(得分:0)

您永远不会创建类MyException的实例,所以当您尝试调用SetMessage时,您没有可以调用它的对象。

请改为:

struct MyException socketException;

...

socketException.SetMessage("socket connection error");
       throw socketException;