gpt4 book ai didi

c - 线程中的动态分配和释放

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:30 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

任何通过 malloc 分配的内存仍然需要手动释放。要么线程需要在退出之前执行此操作,要么指向分配内存的指针需要可供另一个线程使用以进行清理。

关于c - 线程中的动态分配和释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51861511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com