Задать вопрос
@Lockdown6

Высвободится ли память,если использовать метод clear() у vector,который был заполнен структурами?

name = new char[20];
std::cin >> name;
data.push_back(Student{(short) data.size(),name});
data.clear();

Я создал структуру:
struct Student
{
    int id;

    char *name;
};

Для name я выделяю память динамически,а также структуры хранятся в vector.

Вопрос такой,что будет,если я буду использовать метод clear(),чтобы очистить все структуры в vector?
Вся динамически выделенная память для name высвободится или удалятся все объекты в vector,но будет утечка памяти?
  • Вопрос задан
  • 492 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
beevasya
@beevasya
программист C++/C#
name не освободится, будет утечка памяти.
Если нужно освобождать память, то лучше Student делать как класс и соответственно в конструкторе создавать name и в деструкторе освобождать
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
В С++ структура это практически то же самое что и класс.
Реализуйте в структуре деструктор, в котором будет освобождаться память под name. При удалении элементов в векторе (clear), для каждого существующего элемента будет вызван деструктор.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы