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/