- 356 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 00:17:24 ]
- たびたび、すみません。
スレッドに複数の引数を渡したい者です。 //スレッド関数 void Thread_f(void* StructData){ //何にもしないスレッド StructDataは、下で出てくるData構造体 } メインのほうで、スレッド作成 Data data; //Dataっていう複数の引数を渡すための構造体 for(int i=0;i<n;i++){ data=datalist[i];//datalistは、Data構造体のポインタ配列 代入してから渡してます handle[i] =(HANDLE) _beginthread(CameraThread,0, (void *)&data); Sleep(3000); i++; //スレッド立ち上げてる間に、全部スレッド側で全部datalist[n]になってしまうので。 //ちょっとSleepしました。すごいダメな処理です。すみません。 } n=1のときは、エラーでないです。 nが2より大きいと、動くことは動きますが、×(ウィンドウの閉じるボタン) で閉じると、 -ElnvalidPointerクラスの例外を生成しました。 -'無効なポインタ操作' -プロセスは停止しています。・・・・ というエラーがでます。 ”同じポインタを 2 回破棄したり,すでに破棄したポインタを参照したりすると出る” とネットの掲示板でありました。 同じ関数のスレッドに、それぞれ違うdataを渡したいときは、スレッド関数に引数渡さないほうがいいですか? 248さんが言ってたのは、このことかなぁと思って、今は、引数渡さない方法でやってますが。 上記のプログラムに、手を加えてエラーで無い方法ないでしょうか。
|

|