- 57 голосов
- 0 ответов
- 0 просмотров
Разница между деструктором, методом удаления и финализации
Я изучаю, как сборщик мусора работает в c #. Я запутался в использовании
Я изучаю, как сборщик мусора работает в c #. Я запутался в использовании
РЕДАКТИРОВАТЬ: Резюме ответов В дальнейшем B является подклассом A. Это вопрос терминологии; ctors и dtors являютсяненаследуется в том смысле, что Ctor / Dtor B будетне быть заимствованным из интерфейса А. Класс имеет по крайней мере один ...
ня я видел какой-то устаревший код. В деструкторе есть утверждение типа "
редлагает_Exit функция, которая выходит "немедленно", хотя этоделает может закрыть файловые дескрипторы. Unix / POSIX расширяет это поведение, предписывая закрытие всех fd без сброса (и предлагает ...
У меня есть класс PHP, который создает изображение PNG на лету и отправляет его в браузер. Руководство по PHP говорит, что мне нужно убедиться, чтоImageDestr...
Как правильно выполнить статическую финализацию?Там нет статического деструктора.
Если я вызываю деструктор явным образом (myObject. ~ Object ()), гарантирует ли это, что объект будет надлежащим образом уничтожен (вызывая все дочерние дест...
именно объекты уничтожаются в C ++, и что это значит? Нужно ли их уничтожать вручную, так как нет сборщика мусора? Как возникают исключения? (Примечание: это означает, чтоFAQ по C ++ для переполнения ...
ужно время от времени создавать изображения с помощью rmagick в директории кеша. Чтобы потом быстро избавиться от них, не теряя их для просмотра, я хочу удалить файлы изображений, пока мой экземпляр Ruby Instance класса Image разрушен или входит ...
Я хочу знать, есть ли какая-либо разница между деструктором и сборщиком мусора, деструктор используется для удаления всех неиспользуемых объектов в конце срока службы приложения, так же как и сборщик мусора, сборщик мусора может вызываться или ...
у явно уничтожитьvector в шаблонном контексте. У меня работает следующее (GNU C ++ 4.3, 4.4 и Clang ++ 1.1): template <typename T> void destroy_vector_owner(VectorOwner<T> *obj) { obj->v.~vector(); // further cleanup by Python API functions ...
Извиняюсь, если вопрос звучит глупо, я следовал за экспертами в SO и пробовал некоторые примеры сам, и это один из них. Я попробовал вариант поиска, но не на...
Я пишу класс Excel, используя Microsoft.Interropt.Excel DLL. Я завершаю все функции, но у меня есть ошибка в моем деструкторе. Я хочу сохранить все изменения в моем файле, и я хочу выпустить все исходные тексты. Я хочу, чтобы все они были в моем ...
Как скоро после того, как счетчик ссылок достигнет нуля,__del__ метод называется? Обещает ли язык, что это сделано сразу же, прежде чем любой другой код использования сможет выполняться? Или каждая реализация может делать то, что ей нравится, ...
Я пытаюсь использовать объединение (C ++), которое имеет некоторые не примитивные переменные, но я застрял, пытаясь создать деструктор для этого класса. Как ...
Будучи в первую очередь разработчиком C ++, отсутствиеRAII (приобретение ресурсов является инициализацией) в Java и .NET меня всегда беспокоило. Тот факт, чт...
Примечание: Я видел похожие вопросы, но ни один из ответов не является достаточно точным, поэтому я задаю это сам. Это очень придирчивый "вопрос языка юриста" Я ищу авторитетный ответ.Стандарт C ++ гласит: Программа может закончить время жизни ...
Чем больше мы используем RAII в C ++, тем больше мы оказываемся с деструкторами, которые делают нетривиальное освобождение. Теперь освобождение (завершение, как бы вы его ни называли) может завершиться неудачей, и в этом случае ...
я есть объект с вектором указателей на другие объекты, что-то вроде этого:
Кто-нибудь может помочь, пожалуйста, каков порядок уничтожения, когда я использую виртуальные функции. Это начинается с базового класса и затем производного ...
Я использую дополнительные скобки в моем коде. Я думал, когда деструктор должен быть вызван после того, как локальная переменная заканчивается, но это не так...
Каков наилучший способ закрыть поток Boost, управляемый классом C ++, когда пришло время уничтожить объект этого класса? У меня есть класс, который создает и...
Большинство людей говорятникогда выбросить исключение из деструктора - это приведет к неопределенному поведению. Страуструп считает, чтовекторный деструктор ...
Как уже упоминалось вэтот ответ простой вызов деструктора во второй раз - уже неопределенное поведение 12.4 / 14 (3.8).Например:
Я использую дополнительные скобки в моем коде. Я думал, когда деструктор должен быть вызван после того, как область локальной переменной закончена, но он не работает так: class TestClass { public: TestClass() { printf( "TestClass()\n" ); ...
аюсь узнать, как финализация и деструктор работает в C #, я пытался запустить код в
Я думаю о создании класса, который представляетвладение примитива синхронизации, что-то вроде этого: class CCriticalSectionLock { public: CCriticalSectionLock( CCriticalSection &cs ) : cs( cs ) { cs.Enter(); } ~CCriticalSectionLock() { ...
class Package: def __init__(self): self.files = [] # ... def __del__(self): for file in self.files: os.unlink(file)__del__(self) выше не удается с исключением AttributeError. Я понимаюPython не ...
На этот вопрос уже есть ответ здесь: Требуется ли std :: unique_ptr <T> знать полное определение T? [/questions/6012157/is-stdunique-ptrt-required-to-know-the-full-definition-of-t] 7 ответовЯ нашел полезным использовать предварительное ...
char * buf = new char[sizeof(T)]; new (buf) T; T * t = (T *)buf; //code... //here I should destruct *t but as it is argument of template and can be //instantiated via basic types as well (say int) so such code /*t->~T();*/ //is incorrect (maybe ...
Я понимаю, что в большинстве случаев не следует явно вызывать деструктор. Тем не менее, я видел пример из C ++ 11 Standard N3485, раздел 13.4.5 Аргументы шаблона: Явный вызов деструктора для объекта, который имеет тип, который ...
В сообщении переполнения стекаПроверка типа объекта в C ++ 11 [https://stackoverflow.com/a/17204598/260127]У меня есть комментарий: В C ++ 11 вы действительно хотите сделатьvirtual ~A() = default; В противном случае вы потеряете конструкторы ...
У меня есть объект с внутренним подключением к базе данных, который активен на протяжении всей своей жизни. В конце выполнения программы соединение должно быть зафиксировано и закрыто. До сих пор я использовал явныйclose метод, но это несколько ...
Я пытался понять, что говорит правило нуля, читаяэтот блог, IMO, он говорит, что если вы объявите свой собственный деструктор, то не забудьте создать констру...
У меня есть это определение класса: class FlashStream { public: explicit FlashStream(const char * url, vector<uint8> * headers, vector<uint8> * data, void * ndata, void * notifyData = NULL, uint32 lastModified = NULL); ~FlashStream(); private: ...
Я немного запутался с деструкторами иnoexcept, Насколько я понимаю, в C ++ 11 любой деструктор, в том числе пользовательский, неявноnoexcept(true)даже если мыthrow от него. И нужно указать явноnoexcept(false) если они хотят, чтобы так было по ...