2011-06-27 31 views
0

我有我穿過的CreateThread如何將結構作爲指針傳遞? [C++]

packetargs *args; 
args->s=s; 
args->buf=buf; 
args->len=len; 
args->flags=flags; 
args->to=to; 
args->tolen=tolen; 
CreateThread(NULL,0,mThread,args,0,NULL); 

一個struct但是,當我收到它在我的線程函數,它崩潰的應用程序(因爲信息是錯誤的):

DWORD WINAPI mThread(LPVOID args) 
{ 
    packetargs *pargs = (packetargs *)args; 

我該如何將結構作爲指針傳遞,然後在線程函數中再次創建它?

回答

4

你忘了分配任何內存爲你的結構:

packetargs *args = new packetargs; 

(當然,你需要delete它在某個時候。)

+0

哇哦,謝謝。 我很生鏽。 – Nowayz

+0

該結構在通過後似乎仍包含不同的信息。我不知道爲什麼 – Nowayz

+0

也可能只是將args結構創建爲自動變量。顯然要確保它的存活時間足以讓新線程使用它,最安全的是確保它在活動加入該線程之前一直存在。 –