私は pthread の中にいるコードのブロックを持っており (このスレッドを呼び出すことができますa
)、新しい pthread を生成したいと考えています (このスレッドを呼び出すことができますb
)。スレッドb
に両端キューを渡す必要があり、次のコードがあります。
void* process_thread_b(void* arg)
{
deque<string> *ptr = (deque<string>*)arg;
cout << "Size -" << ptr->size() << endl;
deque<string>::iterator it;
for(it = ptr->begin(); it != ptr->end(); it++)
{
cout <<(*it) << endl;
}
}
上記のコードはスレッドb's
コードです。両端キューが渡され、サイズが正しく出力されます。その要素のいずれかを印刷しようとすると、次のようになります。
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Abort (core dumped)
pthread を生成するときは、以下のコードを使用します...
deque<string> myDeque;
// Add strings to deque here...
pthread_t dispatchCommands;
pthread_create(&dispatchCommands, NULL, &process_thread_b, (void*)&myDeque);
一番下のコードはスレッドで実行されますa
。両端キューの要素を出力しようとすると、エラーが発生するのにサイズを取得できるのはなぜですか?