每当我将特定的指针地址输出到 时std::cout
,我都会崩溃:
bool MyClass::foo() const
{
std::cout << "this prints fine" << std::endl << std::flush;
std::cout << d << std::endl << std::flush; // crash!
return true;
}
类的指针成员在哪里d
,即:
class MyClass {
// ...
private:
MyClassPrivate* d;
};
什么可能导致应用程序崩溃?即使它是一个 NULL 指针,或者一个已初始化的指针,它仍然应该打印出(可能是无效的)地址,对吧?
应用程序在调试模式下编译,如果有区别的话。该函数foo
未标记为内联。
背景:我正在尝试追踪外部应用程序进程中的错误。该错误仅在另一个应用程序向进程发送快速命令时引起。我std::cout
用来跟踪外部进程的执行。