У меня есть вопрос о возврате результатов из выполняемой функции pthread.
Код, связанный с:
void* thread_func(void* args)
{
float result = 0;
// ...do something
return (void*)&result;
}
// ... using code
float answer;
pthread_join(pthread_handle, &answer);
Мне кажется, что такое решение не должно работать безопаснопотому что result
будет находиться в стеке thread_func
и прекратит существование после возврата thread_func
.Тем не менее, во всех тестах, которые я сделал, это работает безупречно.Есть ли что-то, что я неправильно понимаю, почему это безопасно?Если нет, и мои тесты только что сработали из-за какой-то случайности, как мне безопасно вернуть возвращаемое значение из thread_func
безопасно?