[关于线程]请教这样为什么会崩溃
[关于线程]请问这样为什么会崩溃?
------解决方案--------------------
楼主这样试试
Test::Test():sQueue(NULL)
/*
m.cpp
*/
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include "Test.h"
int main()
{
StringQueue *queue = new StringQueue();
Test *t = new Test();
t->sQueue = queue;
ResumeThread(t->hThread);
queue->front();
return 0;
}
/* Test.h */
#ifndef __TEST_H__
#define __TEST_H__
#include <windows.h>
#include <stdio.h>
#include <queue>
#include <string>
extern DWORD WINAPI ThreadFunc(LPVOID test);
typedef std::queue<std::string> StringQueue;
class Test
{
public:
Test();
StringQueue *sQueue;
HANDLE hThread;
};
#endif
/* Test.cpp */
#include "Test.h"
Test::Test()
{
hThread = CreateThread(NULL, 0, ThreadFunc, (LPVOID)this,
CREATE_SUSPENDED, NULL);
}
DWORD WINAPI ThreadFunc(LPVOID test)
{
Test *pTest = (Test *)test;
pTest->sQueue->push(std::string("AAAA")); //即使把这里加上 new , typedef std::queue<std::string> 换成 typedef std::queue<std::string *> 一样崩溃
}
------解决方案--------------------
楼主这样试试
Test::Test():sQueue(NULL)