Используйте free() для структуры, содержащей массив

typedef struct Rental {
    int nDays;
    float kmsDriven;
    char carLicensePlate[LICENSE_PLATE_LENGTH+1];
    char *clientName;
    char chargingCategory;
} Rental;

Я получил верхнюю структуру, и я сделал массив указателей на эти структуры следующим образом:

Rental* rentArray[nRent];`

Я пытаюсь использовать это бесплатно, но rentArray[0] все еще остается не пустым. Что случилось?

1 ответ

Решение

Освободить память не значит очистить память. После освобождения объема памяти указатель, на который он указывает, становится недействительным. Однако экстент все еще может содержать предыдущие данные, если он не потребуется другим запросом памяти.

Тем не менее доступ к такой степени в общем случае приводит к неопределенному поведению.

Другие вопросы по тегам