Что такое висячий указатель (dangling pointer) в C?
Этот вопрос проверяет понимание висячих указателей и их последствий.
Короткий ответ
Висячий указатель — это указатель, который указывает на освобождённую или несуществующую память. Использование такого указателя может привести к неопределённому поведению.
Длинный ответ
Создание висячего указателя:
int *ptr = (int*) malloc(sizeof(int));
free(ptr); // Освобождение памяти
printf("%d", *ptr); // Ошибка! ptr указывает на освобождённую память
Как избежать висячих указателей?
- Обнулять указатели после free():
ptr = NULL;
- Использовать smart pointers в C++ вместо malloc.
Вывод: Висячие указатели приводят к ошибкам памяти и утечкам данных.