请问CreateThread的一个问题
我遇到一个讨厌的问题,请大家帮忙解决,谢谢
在一个类中定义了两个成员函数,
class base
{
public:
base();
virtual ~base();
static void p1(LPVOID pData)
{
//这里是使用传入的pData指针的操作
((base*)pData)->p2();
}
virtual void p2()
{
...
}
void Createnew();
};
在Createnew()里是这么调用的
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)p1,(LPVOID)this,dwFlag,&dwID);
但是问题是,一运行就出现非法操作。跟踪到p1的时候可以看到((base*)pData)指针的
__vptr指针中的内容全部不正确了,正确的应该是包含虚函数p2的地址,可是现在乱七八糟的,不知道是被什么修改了。
想请大家帮忙看看问题是出在哪里?或者是否有其他方法实现同样的功能?
非常感谢!