- 874 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 09:06:17 ]
- MFCでマルチスレッドのプログラムを作成していますが、引数の受け渡しのところで悩んでいます
struct ThreadParams{ int a; int b; int c; }; BOOL MyApplicationDlg::OnInitDialog() { … struct ThreadParams tParams; tParams.a = 1; tParams.b = 2; tParams.c = 3; AfxBeginThread(MyThread, (LPVOID)&tParams, THREAD_PRIORITY_NORMAL); return TRUE; } UINT MyApplicationDlg::MyThread(void * param) { struct ThreadParams tParams = (struct ThreadParams)(*param); ←ここで既に呼び出し元のtParamsが消えているかも? /* tParamsを使っていろいろ処理 */ return 0; } 上のようなコードを書いたのですが、OnInitDialog中のtParams変数のスコープは関数内だけなので MyThread関数でtParamsを受け取ろうとしたときには既に消えている可能性があるのではないかと思いました。 こういう場合には呼び出し元で new してスレッドの方で delete するとかで対処するのでしょうか? 他に何かよい方法があればアドバイスをお願いします。
|

|