线程中的动态分配和释放 [英] Dynamic Allocation and Release in thread

查看:10
本文介绍了线程中的动态分配和释放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在线程中分配一些内存。当我调用pthread_detach(pthread_self());时,应该在pthread_exit();pthread_cancel()终止线程后释放Linux为该线程分配的内存。

我的问题是,我是否也应该释放使用Malloc分配的内存?另外,如果线程中的其他函数分配了一些空间,即使线程被终止并且pthread_detach(pthread_self());在线程中被调用,我是否也应该释放这些空间?

void *test_thread(void * arg)
{
    pthread_detach(pthread_self());

    int *c = malloc(2048);
    pthread_exit(NULL);
}

推荐答案

为您做的唯一一件事是您不需要调用pthread_join来清理内部线程数据结构。

通过malloc分配的任何内存仍需要手动释放。线程需要在退出前执行此操作,或者需要将指向错误锁定的内存的指针提供给另一个线程以进行清理。

这篇关于线程中的动态分配和释放的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆