[关于线程]请教这样为什么会崩溃

[关于线程]请问这样为什么会崩溃?
本帖最后由 q332010372 于 2014-06-25 19:45:07 编辑

/*
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)