私がこの構造体を持っているとしましょう
typedef struct person{
char firstName[100], surName[51]
} PERSON;
そして私はmallocによってスペースを割り当て、いくつかの値で埋めています
PERSON *testPerson = (PERSON*) malloc(sizeof(PERSON));
strcpy(testPerson->firstName, "Jack");
strcpy(testPerson->surName, "Daniels");
その構造体が使用するすべてのメモリを解放するための正しく安全な方法は何ですか?「free(testPerson);」です 十分ですか、それとも各構造体の属性を1つずつ解放する必要がありますか?
それは私を別の質問に導きます-構造はどのようにメモリに保存されますか?奇妙な動作に気づきました。構造体のアドレスを出力しようとすると、最初の属性のアドレスと同じになります。
printf("Structure address %d == firstName address %d", testPerson, testPerson->firstName);
つまり、このfree(testPerson)はこのfree(testPerson-> firstName);と等しくなければなりません。
それは私がやりたいことではありません。
ありがとう