AlertEvent::AlertEvent(const std::string& text) :
    IMEvent(kIMEventAlert, alertText.c_str()),
    alertText(text)
{
    //inspection at time of crash shows alertText is a valid string
}


IMEvent::IMEvent(long eventID, const char* details)
{
    //during construction, details==0xcccccccc
}


在相关说明中,等宽字体在chrome中看起来确实很糟糕,这是怎么回事?

最佳答案

alertText可能在调试器中显示为字符串,但尚未构造(因此alertText.c_str()将返回不确定的指针)。

为避免这种情况,可以初始化使用text.c_str()作为IMEvent ctor的参数。

AlertEvent::AlertEvent(const std::string& text) :
    IMEvent(kIMEventAlert, text.c_str()),
    alertText(text)
{
    //inspection at time of crash shows alertText is a valid string
}


IMEvent::IMEvent(long eventID, const char* details)
{
    //during construction, details==0xcccccccc
}

关于c++ - C++构造怪异的未初始化指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/263906/

10-12 23:57