#include <stdlib.h>
struct strt;
typedef struct {
int i;
struct strt *next;
} strt;
strt *s1 = malloc(sizeof(strt));
strt *s2=s1->next = malloc(sizeof(strt));
free(s1);
では、free(s1)
s1 が指すブロックのみを解放しますか、それとも s1とs1->next/s2 が指すブロックを解放しますか?
これは何千回も尋ねられる質問であることは理解していますが、これを検索エンジンで説明することはできませんでした。また、free()
関数のドキュメントで同じ問題について直接言及されているのを見つけることもできませんでした。