我正在编写一个基于 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()
在这样的结构上使用它是有道理的,其中包含的所有数据都将被释放,我不必显式地释放每个结构属性,但我只想确定是否是这种情况。