为什么设置const char*会出现分割错误?

Why does setting const char* gives segmentation fault?

本文关键字:分割 错误 设置 const char 为什么      更新时间:2023-10-16

我有这个简单的函数

 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的行中得到分段错误。我错过了一些非常基本的东西,但我无法弄清楚。我检查了关于分割错误的其他问题,我知道这有时是关于指针的滥用。但我还是不明白

您从未创建类MyException的实例,因此当您尝试调用SetMessage时,您没有对象可以调用它。

这样做:

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