У меня есть связанный список пользователей, таким образом, я сделал эту функцию, удалить пользователя из связанного списка:Бесплатный переменный malloc и возврат в функцию в c?
puser* delete_user(puser* list_users, int fd_to_delete) {
puser *save_users;
save_users = (puser *)malloc(sizeof(puser));
save_users = list_users;
int nb_users = 0;
nb_users = count_user(list_users);
// only one user
if(nb_users == 1)
free(list_users);
return NULL;
// several users
if(nb_users > 0) {
// if it's the first user of the list
if(user_get_fd(list_users) == fd_to_delete)
return user_get_next_one(list_users);
// else
while(list_users != NULL) {
if(user_get_next_one(list_users) != NULL) {
if(user_get_fd(user_get_next_one(list_users)) == fd_to_delete)
list_users->next_client = user_get_next_one(user_get_next_one(list_users));
}
list_users = user_get_next_one(list_users);
}
return save_users;
}
return save_users;}
У меня есть таНос «save_users», но мне нужно, чтобы вернуть это значение. Мой вопрос: как освободить эту переменную?
Спасибо
Спасибо за ваш ответ. Но где я могу назвать free()? Я не могу назвать это в функции, и когда я вызываю функцию, я потерял save_users. – ImbaBalboa
вы бы захватили память, возвращенную из этой функции, в переменную: 'puser * the_users = delete_users();' а затем вы передадите память в free(): 'free (the_users);' – kcraigie
Спасибо, я понял! – ImbaBalboa