Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
14 ноября 2017 г. 8:43

Как удалить QVector и освободить память

QVector

Здравствуйте.
Как удалить QVector и освободить память? В документации написано QVector::~QVector(). Делаю так, а он все равно остается.

QVector<double> A3(382);
//заполняю вектор
A3.~QVector();  //пытаюсь удалить
qDebug() << A3; //все равно выводит
При использовании  delete A3; выводит ошибку.
7

День добрый

Никто так не делает )))

A3.~QVector();
Деструктор вызывается только оператором delete или автоматически, когда переменная объявлена локально в методе.
Оператор delete сработает без ошибок только в том случае, если память была выделена через оператор new.
В случае выделения памяти в стеке, эта память будет освобождена автоматически. Как раз ваш случай.

Для Django рекомендую VDS-хостинг TIMEWEB

0

И как можно просто освободить память?

0

Бессмысленный вопрос вне рамок контекста.

Для Django рекомендую VDS-хостинг TIMEWEB

0

Я Вам уже ответил на ваш вопрос.
Либо оператором delete в том случае, если память выделялась через оператор new.

Либо никак, память будет автоматически освобождена, если она была выделена в стеке, то есть имеет определённую локальную видимость.
Так работает C++.
В том примере, что Вы привели нет никакой необходимости освобождать память. Она будет удалена автоматически, когда закончится время выполнения метода или жизни объекта, который содержит этот вектор.
Ваши попытки освобождения памяти не имеют смысла в данном случае, в данном контексте.

Для Django рекомендую VDS-хостинг TIMEWEB

0

Спасибо. Но почему не работает ~QVector(); ?

0

Потому, что так работает C++. Явно деструктор не вызывают в принципе. Удаление вызывается операторм delete.

В деструкторе описываются действия, которые необходимо произвести при удалении объекта. Например, удалить объекты, которые были созданы в куче через оператор new внутри данного объекта.

Для Django рекомендую VDS-хостинг TIMEWEB

0
  • 14 ноября 2017 г. 9:34

Я бы вам посоветовал почитать книгу по контейнерам и как с ними работать. Если прочитаете про стандартные контейнеры будете понимать как с ними работать и с памятью что вы выделяете под них. Просто ощущение что вы просто что то пишите не понимая что и спрашиваете почему это не работает.
Вот такую книгу попробуйте
Стандартная библиотека С++: справочное руководство

2-е издание
Николаи М. Джосаттис
1

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
12 декабря 2018 г. 18:49
Yaroslav Chernetskyi

Qt - Тест 001. Сигналы и слоты

  • Результат:31баллов,
  • Очки рейтинга-10
12 декабря 2018 г. 6:19
nikbobrecov

Qt - Тест 001. Сигналы и слоты

  • Результат:57баллов,
  • Очки рейтинга-2
11 декабря 2018 г. 18:59
Feniks3000

C++ - Тест 003. Условия и циклы

  • Результат:71баллов,
  • Очки рейтинга1
Последние комментарии
11 декабря 2018 г. 21:01
Евгений Легоцкой

Не знаю, какой-там конкретно эффект и если честно не хочется fl studio ради того, чтобы посмотреть устанавливать, но из того, что увидел в интернете. Предполагаю, что то, что вы хотите с...
11 декабря 2018 г. 19:25
Vlad15007

Подскажите пожалуйста ( я новичок совсем)Можно ли организовать спрайт без этого окошка (как в fl studio fruity dance)?
11 декабря 2018 г. 15:06
Евгений Легоцкой

Что интересно, если написать так from <application_name>.<module_name> import <filename> ,то PyCharm сносит крышу, если разрабатываешь в рамках проекта приложение, ко...
11 декабря 2018 г. 14:52
Илья Чичак

Тут мне тоже есть что сказать=) Сами разрабы советуют импортировать следующим образом: from <application_name> import <module_name> Стоит избегать from . import &l...;
11 декабря 2018 г. 14:28
Евгений Легоцкой

Твоя правда. Согласен. Свои миграции храню в репозитории. На продакшене только выполняю обновление структуры базы данных, после тестирования на дев сервере конечно (читай локальная машина разр...
Сейчас обсуждают на форуме
12 декабря 2018 г. 17:52
Михаиллл

Оказывается оно все переводит в нижний регистр и нужно так писать: SearchTableModel->setTable("\"Test2\"");
12 декабря 2018 г. 16:32
Булат Гиниятов

Допустим в MyObject *myobject = new MyObject; есть метод start(){while(aaa){////////////////}} Как мне обратиться к методу stop(){aaa=false;} ? Соответственно по...
12 декабря 2018 г. 16:28
xintrea

Как выяснилось в этом обсуждении: Отправка Email из Android в Qt для отправки Email в Android необходимо делать Java-метод, который и будет отправлять email. И этот Java-мет...
12 декабря 2018 г. 15:35
lynx

если кому будет вдруг нужно, подумал я над предложением Евгения Но думаю, что проще какой-то функционал дополнить для TableView из Qt Quick Controls 2. вообще берем стандарт...
12 декабря 2018 г. 13:49
Евгений Легоцкой

но у меня нет времени учиться ВЕЧНО давайте без истерик, вы это говорите человеку, который всю жизнь учился, учится и будет учиться, и в программировании всегда так, или учишься и...
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы