Вопросы с тегом 'delete-operator'

На языке программирования С++ оператор delete вызывает деструктор данного аргумента и возвращает память, выделенную новой, обратно в кучу.
1 отв.

Каковы некоторые применения for = delete?

Ранее сегодня я спросил вопрос, который привел к другому: когда следует использовать =delete? Я не думаю, что есть статья, посвященная исключительно =delete на SO, поэтому я просмотрел ее в книге под названием "Язык программирования С++". Я приведу ...
17 сент. '13 в 8:15
4 отв.

Легальность использования оператора delete на указателе, полученном из размещения new

Я уверен, что этот код должен быть незаконным, поскольку он явно не работает, но, похоже, он разрешен С++ 0x FCD. class X { /* ... */}; void* raw = malloc(sizeof (X)); X* p = new (raw) X(); // according to the standard, the RHS is a placement-new ex...
11 дек. '10 в 21:24
1 отв.

Почему оператор удаления требуется для виртуальных деструкторов

В автономном контексте (без стандартных библиотек, например, при разработке операционной системы) с использованием g++ возникает следующее явление: class Base { public: virtual ~Base() {} }; class Derived : public Base { public: ~Derived() {...
28 июля '15 в 23:32
1 отв.

Удалить vs operator delete (и указатель void)

Разве delete ptr отличается от operator delete(ptr) только тем, что delete вызывает ptr деструктор? Или, другими словами, delete ptr сначала вызывает деструктор ptr, а затем operator delete(ptr) для освобождения выделенной памяти? Тогда delete ptr т...
13 мая '12 в 20:18
3 отв.

Является ли вызов delete по результату удаления места размещения, который использовал новый оператор?

Если я делаю struct MyStruct { ~MyStruct() { } }; void *buffer = operator new(1024); MyStruct *p = new(buffer) MyStruct(); // ... delete p; // <---------- is this okay? является delete, гарантированным как для вызова ~MyStruct(), так и...
24 мая '13 в 2:57
1 отв.

Почему оператор С++ new/delete/variant не должен быть в файлах заголовков?

Может кто-нибудь объяснить природу этой ошибки компиляции С++? Я разбираюсь/узнаю о перегрузке глобальных операторов new, delete и их вариантах. Я прочитал пару статьи on , но я не мог " t найти тот, который, кажется, обращается именно к этому. ...
05 сент. '16 в 8:13
4 отв.

Написание функции, чтобы освободить указатель и присвоить ему NULL

Мне было предложено это в недавнем интервью, в основном написав функцию, чтобы объединить функциональные возможности бесплатного и назначить нуль. Я ответил следующим образом: void main() { int *ptr; ptr = new int; ptr = newdelete(...
02 июля '10 в 10:06
6 отв.

Каков правильный способ удаления char **

У меня есть char **, в основном массив строк, который мне нужно удалить. Каков правильный способ сделать это, чтобы все указатели были очищены?
13 мая '11 в 12:10
1 отв.

Компиляция С++ без оператора delete

Я пишу программу на С++ для встроенного устройства, и я хочу скомпилировать ее без libstdС++, исключений и динамического выделения памяти. Пример программы: #include <stdio.h> class A { public: virtual ~A() {} virtual void Foo() = 0;...
22 авг. '16 в 19:47
1 отв.

С++: Если я перегружаю новый оператор, мне тоже нужно перегрузить оператор удаления?

Я читал вопрос о SO, и в одном из ответов он упоминался как: Если не удается найти однозначную функцию дезадаптации, распространение этого исключения не приведет к освобождению памяти объектов. Итак, если я просто перегружаю мой new оператор, а н...
04 сент. '18 в 5:56
4 отв.

Почему в С++ есть delete []?

Почему существует delete[]? По моему мнению, он должен вести себя по-разному для массивов. Однако почему это действительно существует? Там только бесплатно в C и нет free_array. Также в синтаксисе единственное различие между delete var и delete []va...
12 сент. '10 в 12:26
2 отв.

Замена удаления на С++, missinformation

Я пытаюсь (и решил) проблему с проблемами выравнивания по 16 байт с классом, который содержит оптимизированные члены SSE. Но то, что прослушивает меня, - это большая часть примеров, которые я нашел в Интернете, содержит строку кода, которая для меня ...
25 июля '12 в 11:41
4 отв.

Удаление вектора указателей

Мне нужно создать указатели экземпляров класса, и во время компиляции программа не знает, сколько указателей я создам. Для удаления я рассматривал возможность хранения указателей в векторе, а затем их удаление один за другим. Будет ли использование и...
11 апр. '13 в 10:10
3 отв.

Если я пишу операторы new и delete для класса, мне нужно написать все их перегрузки?

На странице С++ Reference перечислены 8 перегрузок по классам для глобальных новых операторов. Четыре из них были добавлены для версии С++ версии 2017 года. Функции распределения для класса void* T::operator new ( std::size_t count ); void* T::...
06 авг. '17 в 23:38
3 отв.

Объектно-ориентированное самоубийство или удалить его;

Следующий код, скомпилированный с MSVC9.0, запускает и выводит Деструктор четыре раза, что логично. #include <iostream> class SomeClass { public: void CommitSuicide() { delete this; } void Reincarnate() { this->...
18 окт. '10 в 16:29