Всякий раз, когда я запускаю valgrind в своей программе, это говорит о том, что я, возможно, потерял память везде, где я вызываю pthread_create. Я пытался следовать указаниям на
Ошибка утечки памяти valgrind при использовании pthread_create
http://gelorakan.wordpress.com/2007/11/26/pthead_create-valgrind-memory-leak-solved/
и другие различные сайты, которые Google дал мне, но ничего не помогло. До сих пор я пытался присоединиться к потокам, устанавливая pthread_attr_t в DETACHED, вызывая pthread_detach в каждом потоке и вызывая pthread_exit ().
пытается PTHREAD_CREATE_DETACHED -
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_create(&c_udp_comm, &attr, udp_comm_thread, (void*)this);
pthread_create(&drive, &attr, driving_thread, (void*)this);
pthread_create(&update, &attr, update_server_thread(void*)this);
Я думаю, что я, возможно, закодировал это следующее, присоединившись неправильно ... Я иду
https://computing.llnl.gov/tutorials/pthreads/
и они имеют все свои потоки в массиве, поэтому они просто для цикла. Но у меня нет их всех в массиве, поэтому я попытался просто изменить его на работу. Пожалуйста, скажите мне, если я сделал это неправильно.
void* status;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
pthread_create(&c_udp_comm, &attr, udp_comm_thread, (void*)this);
pthread_create(&drive, &attr, driving_thread, (void*)this);
pthread_create(&update, &attr, update_server_thread(void*)this);
pthread_join(c_udp_comm, &status);
pthread_join(drive, &status);
pthread_join(update, &status);
пытается pthread_detach -
pthread_create(&c_udp_comm, NULL, udp_comm_thread, (void*)this);
pthread_create(&drive, NULL, driving_thread, (void*)this);
pthread_create(&update, NULL, update_server_thread(void*)this);
pthread_detach(c_udp_comm);
pthread_detach(drive);
pthread_detach(update);
пытается pthread_exit -
pthread_create(&c_udp_comm, NULL, udp_comm_thread, (void*)this);
pthread_create(&drive, NULL, driving_thread, (void*)this);
pthread_create(&update, NULL, update_server_thread(void*)this);
pthread_exit(NULL);
Если кто-нибудь может помочь мне понять, почему ничего из этого не работает, я был бы очень признателен.