Я все еще немного новичок в c и пытаюсь выделить часть памяти для структуры внутри функции и передать ее по ссылке.
Мое решение не работает, потому что структура Я инициализирую, там не передается другим функциям, и я получаю ошибки при попытке доступа к памяти, которая не выделена.
Вот код проблемы c:
#include <stdlib.h>
typedef struct list list;
struct list {
int x;
};
void init_list(list* mylist){
mylist = malloc(sizeof(list));
mylist->x = 1;
}
void free_list(list* mylist){
free(mylist);
}
main(){
list mylist;
init_list(&mylist);
//use the value of x for something
free_list(&mylist);
}
Я пытался сделать this:
init_list(list* mylist){
list *temp = malloc(sizeof(list));
-initiliaze variables-
*mylist = *temp
}
В этом случае другие функции могут получить доступ к структуре, но я не могу освободить ее, потому что у меня нет правильного указателя. Он просто говорит «free () недопустимый размер», когда я пытаюсь запустить его.
Так каков правильный способ выделения памяти и передачи адреса в этом случае? Также я знаю, что мог бы просто вернуть его, но я хочу знать, возможно ли это по ссылке.
Также я использую clang для компиляции.
Заранее спасибо.