Форум программистов, компьютерный форум CyberForum.ru

delete this - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ visual c++, как сделать форму невидемой http://www.cyberforum.ru/cpp-beginners/thread633369.html
помогите, как в Visual Studio 2005 С++, сделать программу невидимой?
C++ Почему, С++ ругается на контруктор? Почему у меня С++, ругается на контруктор вектора - vec3(const vec3 v) ??? typedef struct vec3 { union { float v; struct { float x; http://www.cyberforum.ru/cpp-beginners/thread633366.html
C++ Композиционная связь между шаблонами. работа дестракторов
Есть например такой проект. Вопросы в следующем. Как происходит процесс работы дестрактора между этими классами ? Правильно ли я реализовал Дестрактор в шаблоне Стек??? Т.к. Стек юзает данные из шаблона Array можно ли вообще оставить имплементацию его (стека ) дестрактора пустую ??? //
В заголовоке окна кракозябры, да и на компонентах тоже C++
Начал работу с примерами с firststep для MFC Столкнулся с проблеммой: Английский заголовок окна выводится на китайском. Как сделать английский? Система: Windows 7 SP 1 по русски. #include "afxwin.h" // MFC Основные и стандартные компоненты
C++ Ошибка в коде http://www.cyberforum.ru/cpp-beginners/thread633348.html
класс big нужен для хранения чисел в двоичном виде #include <iostream> using namespace std; class big { public: bool digit;
C++ Templates. (concrete inheritance). question to destructor implementation Есть вот такой вот проект. Идея в том том что конкретный класс наследуется от темплейта. Как в таком случае ПРАВИЛЬНО + ГРАМОТНО реализовать дестрактор у конкретного класса ??? PointArray::PointArray(int size) : Array<Point>(size) { } PointArray::~PointArray() подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1603 / 995 / 118
Регистрация: 27.09.2009
Сообщений: 1,918
Завершенные тесты: 1
05.08.2012, 22:33     delete this
Последствий заведомо не будет только в том случае, если одновременно а) в функции-члене после delete this не производится никаких действий с объектом; б) на вызывающей стороне не производится никаких дальнейших действий с объектом; и в) если на вызывающей стороне этот объект не уничтожается (то есть, он должен быть создан через new без парного delete).
Возможные последствия такого баловства:
- попытка проведения операций с уже уничтоженным объектом и, более узко
- попытка повторного удаления уже удалённого объекта (вызов деструктора на уже уничтоженном объекте)
Эти два пункта могут остаться без последствий, могут привести к аварийному завершению программы, если страница памяти, в которой был объект, освободилась, или к непредсказуемым последствиям (порча неизвестно каких данных), если этот участок памяти был снова выделен программе уже под другой объект. Дополнительно, эффекты работы с уничтоженным/переписанным объектом зависят от реализации самого класса и могут варьироваться от "без последствий" до аварийных завершений или происходящей "втихаря" порчи содержимого памяти в произвольном месте (то есть, любая переменная, массив, объект, возможно даже участки программного кода).
- попытка повторного освобождения уже освобождённой памяти (может игнорироваться)
В общем, потенциальный геморрой настолько богат и разнообразен, что обещает множество увлекательных часов, проведённых за отладкой и отчаянным вырыванием на себе волос.
 
Текущее время: 12:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru