Как освобождать std::vector?

Рейтинг: 0Ответов: 1Опубликовано: 05.02.2023

Делаю алгоритм на C++, и в нем мне нужен расширяющийся список чисел. Нашел std::vector, и вроде все хорошо, однако у меня утечки.

Создаю вот так:

std::vector<int> openTiles = *new std::vector<int>();

Пробовал удалять через:

  • openTiles.clear();
  • delete & openTiles;
  • delete[] & openTiles
  • std::vector<int>().swap(openTiles);
  • openTiles.get_allocator().deallocate(openTiles._Unchecked_begin(), openTiles.size());

Помогите, как мне этот std::vector убрать из памяти?

Ответы

▲ 1Принят

А никак.

std::vector<int> openTiles = *new std::vector<int>();

Вы создаете std::vector<int>(), копируете его и благополучно теряете указатель на оригинал. Всё. Утечка неизбежна...

Объясните, чем вам просто

std::vector<int> openTiles;

не нравится? Абсолютно тот же результат — пустой вектор, и никаких утечек...