Вопросы по теме 'destructor'

Деструктор в С++
Я сделал заголовочный файл с классом cmysqldb с большим количеством указателей. Моя проблема сейчас такова: Как я могу создать деструктор, который удалит указатели, которые могут вызвать потенциальную утечку памяти? вот код заголовка:...
952 просмотров
schedule 06.04.2024

Сбой вектора возврата C++ после возврата объекта и выхода из функции
Проблема заключалась в глупой ошибке другого класса при доступе к вектору и удалении итераторов. Ничего общего с кодом ниже. Извините за потраченное время. Я должен упустить что-то элементарное. У меня есть функция, которая создает объект,...
2428 просмотров
schedule 17.11.2023

Почему gcc мгновенно уничтожает мой объект, несмотря на его масштаб? (и как сделать, чтобы этого не было?)
Я написал небольшой класс профилирования с сопровождающим классом защиты, чтобы использовать его следующим образом: { ProfileGuard pg("SampleName"); // Code to profile ... } Но потом я заметил, что иногда gcc оптимизирует код...
219 просмотров
schedule 21.12.2023

Почему в C ++ 11 не удаляется объект, имеющий деструктор с поведением undefined побочным эффектом?
В этом ответе цитируется C ++ 11 Standard 3.8: если нет явного вызова деструктора или если выражение удаления (5.3.5) не используется для освобождения памяти, деструктор не должен вызываться неявно, и любая программа, которая зависит от...
356 просмотров

Скалярный деструктор удаления
У меня есть фрагмент кода (из DLL), который выглядит так: class A { public: virtual ~A(); }; class B : public A { public: ~B(); } ~A() { // #1 } ~B() { // #2 } Когда я использую delete an_instance_of_B , я...
8920 просмотров

Почему/как механизм, который очищает статику, получает права доступа, которые позволяют ему вызывать частные члены?
Я протестировал шаблон для объявления одноэлементного класса в C++, который делает деструктор по умолчанию "приватным", но этот шаблон не использует этот деструктор ни при каком вызове члена. Я тестировал этот код на Ubuntu QQ с помощью...
120 просмотров

Деструктор типа С++ не вызывается в QML
Я создаю приложение Sailfish (используя последнюю версию Sailfish SDK). У меня проблема с представлением объекта C++ в QML. Он наследует QSettings, class Settings : public QSettings { Q_OBJECT /**/ public: explicit Settings() :...
1591 просмотров
schedule 10.11.2023

Вставить файловый поток в std::map
Я пытаюсь реализовать std::map (на самом деле std::pair) с файловыми потоками. Поскольку стандартные файловые потоки C++ (ifstreams ofstream и fstream) не могут быть скопированы, выбор пал на FILE из stdio . Это простейшая оболочка класса:...
1210 просмотров
schedule 30.01.2024

Какие проблемы с написанием такого задания?
На днях у меня был разговор с моим другом о назначении и построении объектов, и он отметил, что назначение a = b для объектов (семантически) эквивалентно уничтожению a и последующему воссозданию его из b (в том же месте) . Но, конечно, никто...
134 просмотров

Почему деструкторы в С++ увеличивают размер объекта, в котором они находятся?
Я знаю, что это может показаться странным вопросом, но мне просто интересно, весит ли класс в C++ больше, чем структура с теми же полями данных, и есть одна вещь, на которую я не смог найти ответ... Рассмотрим это: struct SomeStruct { int a;...
1149 просмотров
schedule 29.12.2023

уничтожение объекта векторным членом
Недавно я столкнулся со странной ошибкой при кодировании классов с вектором в качестве члена. Ошибка внесена мной, но результат выполнения меня шокировал. Упрощенный пример показан ниже. В основном ошибка заключается в конструкторе, где h2...
368 просмотров
schedule 03.09.2022

Причина утверждения отладки в этом коде
Предположим, что у меня есть этот код - этот код ничего не делает, и я понимаю, что это утечка памяти, так как деструктор автомобиля не является виртуальным. Однако я не понимаю, почему я получаю отладочное утверждение для этого кода. Я использую...
44 просмотров
schedule 10.05.2024

Виртуальный деструктор базового класса C++ Qt
Нужен ли нам виртуальный деструктор для классов, которые будут использоваться в Qt-способе: установите QObject -parent, который будет вызывать деструктор QObject deleteLater() или что-то подобное для любого объекта, для которого он был установлен...
3087 просмотров
schedule 16.01.2024

Прямой вызов деструктора в C++
Отсюда код ниже. class A { int x; public: A() {x = 3;} }; int main() { void* mem = operator new(sizeof(A)); A* obj = static_cast<A*>(new(mem)(A)); std::cout << obj->x << std::endl; obj->A::~A();...
672 просмотров

Почему мы говорим, что деструктор вызывается, когда объект выходит из области видимости?
Я узнал, что деструктор вызывается, когда объект выходит за пределы области видимости, а также деструктор удаляет объекты. Хорошо, хорошо, но что здесь происходит? Я вызываю деструктор явно, если он удаляет объект, то почему деструктор вызывается...
2046 просмотров
schedule 27.01.2024

Необъяснимое поведение деструктора
В этом вопросе: Как работают виртуальные деструкторы? В верхнем ответе есть следующее примечание: Note that the destructor of the base class will be called implicitly after the destructor of the derived class finishes. This is a difference to...
86 просмотров
schedule 12.01.2024

Стирание IBuffers в деструкторе
У меня есть класс, который внутренне управляет IBuffer. Данные являются конфиденциальными, поэтому я хотел бы, чтобы класс гарантировал, что буфер равен 0, прежде чем он будет уничтожен, чтобы не оставлять биты в памяти. У меня есть метод Erase(),...
201 просмотров
schedule 13.10.2023

Как остановить вызов деструктора для объекта, выделенного в стеке?
У меня есть класс, подобный объединению, с членом, который может быть или не быть мусором в зависимости от логического флага, также установленного в том же классе. Очевидно, я не хочу, чтобы этот мусор уничтожался, когда мой класс выходит за рамки....
202 просмотров
schedule 23.01.2024

Тема, созданная статическим объектом, удалена до DTor?
У меня есть следующие классы в моем коде. Другими словами, существует статический объект (singletone), который создает поток в CTor, и когда вызывается его DTor, он выполняет некоторую работу в контексте этого потока (DTor помещает некоторые задания...
265 просмотров
schedule 05.10.2022

Действительность выражения вызова деструктора примитивного типа
Я очень удивлен, что, хотя это правильно сформировано: int main() { using T = int; T t; (void)t; t.~T(); } это не: int main() { int t; (void)t; t.~int(); } Тем не менее, это снова хорошо сформировано:...
38 просмотров
schedule 07.10.2023