64,649
社区成员
发帖
与我相关
我的任务
分享
//================================
//Processor.h
class Processor
{
//......
//.....
public:
static UINT __stdcall foo_process_wrapper(LPVOID param);
private:
void foo_process(LPVOID param);
}
extern Processor Proc;
//=============================
//=========================
//Processor.cpp
UINT __stdcall Processor::foo_process_wrapper(LPVOID param)
{
((Processor *)param)->foo_process( (my_param_type *)param );
}
Processor Proc;
//===========================
//================================
//test.cpp
#include "Processor.h"
int main()
{
int Threadaddr;
HANDLE m_handle;
char * buf = "test";
m_handle=(HANDLE)_beginthreadex
(NULL,256000,Proc.foo_process_wrapper,(LPVOID)
buf,0,&Threadaddr);
}
//================================
((Processor *)0)->foo_process;
Processor * Ptest;
(Processor *)Ptest->foo_process
Ptest是一个无效的地址,这么调用肯定崩溃了