私は人の特性とGPAを構造体に保存し、それらの特性をすべて再現するプログラムを作成しています。入力されたグレード/ GPAは浮動小数点型のポインタです。私はメモリ空間を解放するfree_mem関数に問題があります。 Student_tは私の構造体データ型の名前で、* stuは学生レコードの配列の最初の生徒へのポインタであり、int生徒は総学生数の入力値です。私のエラーメッセージが読み:構造体とメモリをクリアするフリー関数:Cプログラミング
error: request for member 'list_grades' in something not a structure or union
error: request for member 'list_grades' in something not a structure or union
error: request for member 'grades_list' in something not a structure or union
error: request for member 'grades_list' in something not a structure or union
構造体のMy機能が... ...
void free_mem(student_t *stu, int students){
int i;
for(i=0;i<students;i++){
free(stu.list_grades);
stu.list_grades=NULL; }
free(stu.grades_list);
stu.grades_list=NULL;
}
EDITメモリをされて解放する
typedef struct{
int sid;
char last_name[NAME_SIZE];
char first_name[NAME_SIZE];
float *list_grades;
float gpa;
} student_t;
My機能である:操作さ私の自由をstu.list_gradesからstu-> list_grades、grades_listからgpaへの関数ですが、2番目の部分ではまだ混乱しています。 void型から互換性のないタイプのタイプを割り当てる「フロート」
マイ:
エラー:「無料」ノートの引数1のための互換性のない型:予想「無効*」が、引数は型である「フロート」 エラーメモリを解放するための機能が...あなたはstudent_t
を初期化する部分を示しやりなさい
void free_mem(student_t *stu, int students){
int i;
for(i=0;i<students;i++){
free(stu->list_grades);
stu->list_grades=NULL; }
free(stu->gpa);
stu->gpa=NULL;
}
'stu.list_grades' - >' stu-> list_grades' – BLUEPIXY
構造体ポインタではなく構造体ポインタを使用しているため、逆参照する必要があります。 '(* stu).list_grades'を使うことができますが、この構文はやや面倒なので、Cは' stu-> list_grades'と同じ略式を提供します。 –
これは意味をなさない: 'free(stu-> gpa)'。あなたは 'フロート'を 'フリー'に渡しています。 'free(123.456) 'と変わりはありません。意味がない、そう? 'free'に*ポインタ*を渡す必要があります。これは' malloc'や 'realloc'などで返されたものです。あなたはそれを選択的に解放することはできません。あなたは全体を解放するか、何もしないでください。 –