0

私はこのようなコードを持っています

X *m = new X(); // X - class derived from CWinThread;

m->CreateThread(CRREATE_THREAD);
m->b_AutoDelete = false;
x->ResumeThread;

関数実行では、ループで実行されるコードがいくつかあります。

delete を実行しようとするとm、例外が発生することがよくあります。

delete、かもしれない、m->Suspendまたは何か他の前に何かをする必要がありますか?

コードは Windows 7 で実行されます

4

1 に答える 1

2

言うのは難しいですが、オブジェクトを削除するときにスレッドの足元から敷物を引き抜くようなものなので、クラッシュする可能性があります.

スレッドを終了する良い方法は、最初に停止するように指示することです。これは、多くの場合、スレッド関数がチェックするブール フラグを使用して行われます。これにより、スレッド関数が適切な方法でクリーンアップを処理できるようになります。それが完了したら、別のブール値フラグで確認できます。その後、オブジェクトを自由に削除できます。

于 2013-08-02T12:36:11.790 に答える