Использование бесплатной функции - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу знать, пожалуйста, где я должен использовать функцию "free"?

Я использую ее, когда я уже использую функцию "malloc", или я использую ее с любым объявленным указателем?

Примечание: в двух случаях тип liste определяется следующим образом:

typedef struct Node * liste; 

Node также является структурой:

struct Node { 
    int value; 
    Node *N;
};

Первый случай

liste l; 
free (l);

второй случай

liste l;
l=(node*)malloc(sizeof(node));
free (l);

Заранее спасибо!

1 Ответ

0 голосов
/ 25 февраля 2019

Справочная страница для free сообщает следующее:

Функция free () освобождает пространство памяти, на которое указывает ptr, которое должно быть возвращенопредыдущий вызов malloc (), calloc () или realloc ().В противном случае или, если free (ptr) уже был вызван ранее, происходит неопределенное поведение.Если ptr равен NULL, никакие операции не выполняются.

В вашем первом случае использование free недопустимо, поскольку l не инициализировано.Второй случай действителен (при условии, что liste является typedef для указателя), поскольку l назначен адрес, возвращаемый malloc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...