线程使用类变量的问题
建一个类CMyClass
#pragma once
class CMyClass
{
public:
CMyClass(void);
public:
~CMyClass(void);
public:
char localfilepath[256];
int Fun(void);
int Test(void);
};
#include "StdAfx.h"
#include "MyClass.h"
UINT ReceiveThread(LPVOID pParam);
CMyClass::CMyClass(void)
{
}
CMyClass::~CMyClass(void)
{
}
UINT ReceiveThread(LPVOID pParam)
{
CMyClass* pMyClass=(CMyClass*)pParam;
pMyClass->Fun();
return 0;
}
int CMyClass::Fun(void)
{ //char localfilepath[256];
CString filename;
filename.Format("c:\\jl\\%d.arj",1);
memcpy_s(localfilepath,_MAX_PATH,filename,filename.GetLength());
localfilepath[filename.GetLength()]=0x00;
AfxMessageBox(localfilepath);
return 0;
}
int CMyClass::Test(void)
{
AfxBeginThread(ReceiveThread,this,THREAD_BASE_PRIORITY_MIN);
return 0;
}
然后在一个对话框放一个按钮调用这个线程函数
void CtestDlg::OnBnClickedButton1()
{
CMyClass m_class;
m_class.Test();
}
此程序在VC6.0下运行正常,但在VC2003,VC2005下,有时localfilepath有时会变成乱码,
最典型的是用鼠标单击按钮执行函数正常,用回车键AfxMessageBox一句100%是乱码。但
localfilepath声明成全局变量或局部变量没有一点问题