写一个Windows程序
void SetPtr(class* pClass)
{
g_pClass=pClass;
}
void Do(){g_pClass->Do()};
Main()
{
SetPtr(xxx);
Do();
}
OnMessage1()
{
Main();
}
OnMessage2()
{
Do();
}
start:
PostMessage 1
PostMessage 2
//若1 2 消息是有序的 那么这个程序没有问题,现在改一下
void SetPtr(class* pClass)
{
MessageBox(debug)
g_pClass=pClass;
}
//MessageBox 将阻止SetPtr继续执行而弹出窗口,
窗口仍然具有消息泵 所以不能阻止2的执行
那么流程变成了Do-》SetPtr 于是崩溃
void SetPtr(class* pClass)
{
g_pClass=pClass;
}
void Do(){g_pClass->Do()};
Main()
{
SetPtr(xxx);
Do();
}
OnMessage1()
{
Main();
}
OnMessage2()
{
Do();
}
start:
PostMessage 1
PostMessage 2
//若1 2 消息是有序的 那么这个程序没有问题,现在改一下
void SetPtr(class* pClass)
{
MessageBox(debug)
g_pClass=pClass;
}
//MessageBox 将阻止SetPtr继续执行而弹出窗口,
窗口仍然具有消息泵 所以不能阻止2的执行
那么流程变成了Do-》SetPtr 于是崩溃