Рубрики

C | Динамическое Распределение Памяти | Вопрос 7

В чем проблема со следующим кодом?

#include<stdio.h>

int main()

{

    int *p = (int *)malloc(sizeof(int));

  

    p = NULL;

  

    free(p);

}

(A) Ошибка компилятора: нельзя применить free к указателю NULL
(B) Утечка памяти
(C) Свисающий указатель
(D) Программа может аварийно завершить работу, так как free () вызывается для указателя NULL.

Ответ: (Б)
Объяснение: free () может быть вызван для указателя NULL, поэтому нет проблем с вызовом функции free.

Проблема заключается в утечке памяти, p выделяется некоторая память, которая не освобождается, но указатель назначается как NULL. Правильная последовательность должна быть следующей:

    free(p);
    p = NULL;

Тест на этот вопрос

Рекомендуемые посты:

C | Динамическое Распределение Памяти | Вопрос 7

0.00 (0%) 0 votes