【发布时间】:2012-06-13 15:21:38
【问题描述】:
我正在编写一个基于 C 的库,但在使用 free() 释放内存块时我有点困惑......
基本上我有几个类似的结构是这样定义的:
typedef struct
{
pthread_t thread_id;
pthread_attr_t attr;
void *data;
size_t stacksize = NULL;
} thread_info;
我基本上使用realloc() 为这个结构分配内存并有一个指向它的数组。
我的问题是,如果我使用:
free(my_array[thread_index]);
free() 调用是否会释放不仅由结构使用的内存,而且会释放其中所有数据类型使用的内存,即。 *thread_id*、attr、data 和 stacksize 也将被释放,或者我必须单独释放它们,然后从数组。
对我来说,如果我在这样的结构上使用free(),那么其中包含的所有数据都将被释放,我不必显式释放每个结构属性,但我只是想确定一下是这样的。
【问题讨论】:
-
是
my_array类型为thread_info[]还是thread_info*? -
thread_info *registry = NULL;