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

标签 c linux dynamic-memory-allocation

我正在线程中分配一些内存。当我调用 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/

相关文章:

c - Var 条件线程按特定顺序排列

linux - 从 Linux 内核模块识别 glibc mmap 区域(VMA)

c - 如何使用另一个函数的参数调用一个函数?

c++ - std::allocate_shared 使用什么类型来分配内存?

c - 如何使用malloc或其他函数在Ram中分配所需的地址?

c - getopt_long_only : how to prevent the next option as being taken as argument for the previous option with "required_argument" flag

c - 为什么 ~0xF 在 32 位机器上等于 0xFFFFFFF0?

python - 客户端(python程序)没有收到服务器(c程序)返回的响应?

mysql - 如何解决mysql VIEW中区分大小写的问题

c - C中的内存分配从1到N