pthread_jointhread_id,&res,如果&res不是NULL – 是免费的res需要?

在这里偶然发现了一个代码示例。 引起我注意的线条(跳过所有其他线条):

{ ... void *res; ... s = pthread_join(tinfo[tnum].thread_id,&res); ... free(res); /* Free memory allocated by thread */ }

任何人比我更深入pthreads评论free(res) ,请? 我不得不说,我以前从来没有见过这样的事情,而使用Googlesearch1-1.5小时并没有给我任何其他类似的例子。

如何得到手表用引号运行bash脚本

无缝内核,isolcpus,nohz_full和rcu_nocbs

如何用setuptools打包Python守护进程

get_user_pages()linux内核使用virt_to_page()

如何使用procfs将内核数据发送给用户空间?

在pthread_join(thread_id,&res)中,如果&res不是NULL – 是否需要空闲(res)?

这取决于线程的返回值是否是动态分配的(使用malloc() &co)。

如果你看看同一页面上的函数thread_start() ,你会看到它有一个return语句:

return uargv;

uagrv分配给:

uargv = strdup(tinfo->argv_string);

因此, free()调用在pthread_join()调用之后的main()使用。 因为res是由uargv (由线程返回)填充的。 你可以在概念上假设在pthread_join()函数中有这样的代码

if (res) *res = uargv;

这是它分配使用strdup() (内部分配内存)。 所以你free()它。 如果线程只是return NULL; (和free()是uargv本身),那么你不需要free() 。

一般的答案是,如果你用malloc()系列函数分配一些东西,那么你需要free() 。

相关文章

可以认为OpenFeign是Feign的增强版,不同的是OpenFeign支持S...
为进一步规范小程序交易生态、提升用户购物体验、满足用户在...
云原生之使用Docker部署Dashdot服务器仪表盘
本文主要描述TensorFlow之回归模型的基本原理
1.漏洞描述Apache Druid 是一个集时间序列数据库、数据仓库和...
内部类(当作类中的一个普通成员变量,只不过此成员变量是cl...