s
Sept. 6, 2023, 4:18 p.m.

Вопрос: Нужно ли в деструкторе удалять динамически созданные QT-объекты. Напр:

class A{
QFrame * dateFrame;

public:

A() {
dateFrame = new QFrame;
}

// вопрос почему в примерах, идущих с QT нет удаления создаваемых объектов?
//Возникает предположение, что эти объекты кдаляются автоматически, но как ?
~A() {
delete dateFrame;
}

};

2

Do you like it? Share on social networks!

1
Evgenii Legotckoi
  • Sept. 6, 2023, 4:35 p.m.

Зависит от того, как эти объекты были созданы.

Если вы передаёте указатель на parent объект, то не нужно, Ядро Qt само разрулит удаление, если нет, то нужно удалять вручную, иначе будет утечка памяти.

Например ваш код требует удаления в деструкторе, если не удалить вручную, то будет утечка памяти.

Если же ваш код будет выглядеть так

A(QWidget* parent) : QWidget(parent) {
dateFrame = new QFrame(this);
}

То в данном случае удалять в деструкторе ничего не нужно. Qt сам разрулит удаление и утечки памяти не будет.

    Comments

    Only authorized users can post comments.
    Please, Log in or Sign up
    • Last comments
    • Evgenii Legotckoi
      March 9, 2025, 9:02 p.m.
      К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
    • VP
      March 9, 2025, 4:14 p.m.
      Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
    • ИМ
      Nov. 22, 2024, 9:51 p.m.
      Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
    • Evgenii Legotckoi
      Oct. 31, 2024, 11:37 p.m.
      Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
    • A
      Oct. 19, 2024, 5:19 p.m.
      Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html