传递给线程的结构体一定要在堆上分配内存

来源:互联网 发布:c语言跟java有什么区别 编辑:程序博客网 时间:2024/05/07 07:38
// Test11.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "Test11.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// The one and only application objectCWinApp theApp;using namespace std;typedef struct _tagParamInfo{int i;}ParamInfo,*PParamInfo;DWORD WINAPI ThreadProc(LPVOID lPatamter){//PParamInfo theParamInfo = static_cast<PParamInfo>(lPatamter);int *lpI = static_cast<int*>(lPatamter);Sleep(1000);printf("%d\n", *lpI);//delete theParamInfo;//delete lPatamter;return 0;}int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){int nRetCode = 0;// initialize MFC and print and error on failureif (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)){// TODO: change error code to suit your needscerr << _T("Fatal Error: MFC initialization failed") << endl;nRetCode = 1;}else{// TODO: code your application's behavior here.for (int i = 0; i < 10; i++){PParamInfo theParamInfo = new ParamInfo();theParamInfo->i = i;int li = i;::CreateThread(NULL, 0, ThreadProc, &li, 0, NULL);}printf("end\n");Sleep(5000);}return nRetCode;}