次のコードがあります。
typedef struct{
char *name;
int age;
} person_t;
person_t
read_person(void);
int main(){
person_t Peter = read_person();
printf("%s %d\n", Peter.name, Peter.age);
}
person_t
read_person(void) {
person_t a;
a.name = "Peter";
a.age = 18;
return a;
}
したがって、関数 read_person では、struct person_t が返されます。「a」はローカル変数なので、関数が終了すると配列 a.name が解放されるのだろうか。
プログラムを実行すると、次の行が出力されることがわかりました
Peter 18
つまり、a.name は解放されません。誰かがこれについて説明できますか?