クラス定義
class TaskWorker
{
...
private:
std::list<client_det*> clientList;
...
public:
void waitForClientResponse();
};
クラスメンバー関数をスレッドとして実行する関数
void* waitForResponse(void* w)
{
TaskWorker* worker = static_cast<TaskWorker*>(w);
worker->waitForClientResponse();
}
スレッド機能の実装
void TaskWorker::waitForClientResponse()
{
client_det* obj = new client_det();
...
clientList.push_back(obj); //valgrind says access violation
...
}
この実装に何か問題がありますか?
プライベートメンバーリストにアクセスするスレッドクラスのメンバー関数に制限はありますか?
スレッド呼び出し
int TaskWorker::assign_and_wait(std::list<MulticastGroupInfo*> groupList)
{
...
...
pthread_t tid;
pthread_create(&tid, NULL, waitForResponse, this);
}
アップデート
デバッグ シンボルを使用せずにコードをコンパイルしたところ、クラッシュはなくなりました。これが私の最近の観察です。
誰でもここで何が起こっているのか教えてもらえますか?