2015-08-23 102 views
-1

我有這個簡單的功能爲什麼設置const char *會導致分段錯誤?

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行。我錯過了一些非常基本的東西,但我無法弄清楚。我查了其他關於分段錯誤的問題,我知道它有時是關於指針的錯誤使用。但我仍然不明白。

+2

你做別的事情,這東西你不告訴我們,造成死機。 –

+0

此代碼[作品](http://rextester.com/WMIY66402)。問題一定需要放在你沒有顯示的代碼中。 –

+0

@ DOUGLASO.MOEN不,OP會嘗試重新分配一個指針(最初指向'NULL')指向其他地方。 –

回答

0

您永遠不會創建類MyException的實例,因此當您嘗試撥打時,您沒有任何對象可以調用它。

而是執行此操作:

struct MyException socketException; 

... 

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