私は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()
ような構造体で使用している場合、その構造体に含まれるすべてのデータの割り当てが解除され、各構造体属性の割り当てを明示的に解除する必要はありませんが、それが当てはまるかどうかを確認したいだけです。