Описание тега delete-operator
In the C++ programming language, the delete operator calls the destructor of the given argument, and returns memory allocated by new back to the heap.
5
ответов
Удалить это? Что это делает?
Учитывая следующее: #include <iostream> using namespace std; class A { public: void func() {delete this;} A() : x(5) {cout << "ctor A" << endl;} ~A() {cout << "dtor A" << endl;} int x; }; int main() { A a; cout <<…
28 авг '11 в 10:14
3
ответа
Удаление того, на что указывает unique_ptr
У меня есть задание на кодирование, и мне нужно освободить всю выделенную память, поэтому я пытаюсь удалить все семафоры, на которые указывает мой unique_ptr. Все unique_ptrs находятся на карте. Фрагменты кода: static map<string, unique_ptr<se…
12 май '14 в 05:37
1
ответ
Удаление узла только с одним дочерним элементом из дерева двоичного поиска
Это код для удаления узла из дерева двоичного поиска. Мой вопрос: почему мы передаем указатель узла по ссылке на DelSingle функция, но мы только передаем указатель на узел DelDoubleByCopying функционировать? template <class T> bool BST<T>…
24 янв '14 в 21:29
5
ответов
C++ удаление объекта
Ли delete() оператор уничтожить все подобъекты объекта тоже? Или мне нужно вызвать удаление подобъекта перед удалением родительского объекта? class equipment { public: int model_id; ... } class player { public: int x, y; equipment * Equipment; playe…
24 июн '13 в 08:05
1
ответ
Почему удаление void* является UB, а не ошибкой компиляции?
Зачем удалять объект через void* быть неопределенным поведением, а не ошибкой компиляции? void foo(void* p) { delete p; } Этот код компилирует и производит код, хотя и с предупреждением о gcc и clang (удивительно, что ICC не выдает предупреждение): …
13 июн '18 в 17:33
2
ответа
Утечка памяти в C++ (valgrind)
Вальгринд утверждает, что я косвенно теряю память; что меня раздражает, так это то, что я понятия не имею, почему это так. Не уверен, является ли это ложным срабатыванием или я просто не понимаю какое-либо назначение указателя или что-то в этом роде…
09 дек '15 в 18:14
5
ответов
Многократное C++ удаление памяти, указанной несколькими объектами
Другой вопрос об удалении указателя в C++ приведен в следующем примере: class Foo { public: int *p; ~Foo() { delete p; p = NULL; } }; Foo *f1 = new Foo(); Foo *f2 = new Foo(); f1->p = new int(1); f2->p = f1->p; delete f2; // ok delete f1; /…
15 окт '10 в 09:32
2
ответа
Что произойдет, если вы примените delete[] к указателю, не являющемуся массивом?
Если вы примените "delete" вместо "delete[]" к массиву в C++, то вы создадите утечку памяти, потому что будет удален только первый элемент. Но что произойдет, если вы случайно примените "delete[]" к указателю, не являющемуся массивом? Например (прос…
04 янв '15 в 22:44
2
ответа
C++ Как удалить элемент объекта по умолчанию, который является указателем
У меня есть тип, который имеет в качестве члена указатель на другой объект. Когда объект (Demo) создан, он инициализирует другой объект (Property) в конструкторе. Я полагаю, что если у меня много таких объектов, я бы не хотел тратить пространство ку…
19 апр '17 в 22:56
4
ответа
Удаляет ли [] освобождение памяти, выделенной указателями на указатели
У меня есть массив указателей на другие объекты под названием Comparable* array (внутри шаблона для класса). Я это понимаю delete удаляет память, на которую ссылается указатель, и что delete [] освобождает память, назначенную каждому указателю в мас…
13 сен '11 в 05:51
2
ответа
Удалить [], вызывая ошибку сегментации?
Может кто-нибудь сказать мне, почему вызов моей функции delete2DMatrix вызывает ошибку сегментации при запуске на G++ в Ubuntu? Я запускаю его в CLion, и он отлично работает и не генерирует ошибку сегментации, поэтому я очень запутался, почему он вы…
21 янв '18 в 22:10
1
ответ
Оператор удаления в абстрактном классе, как это работает
Как это работает class Car { public: Car() = default; Car(const Car& other) = delete; Car& operator=(const Car& other) = delete; virtual void WhatsTheMake() = 0; virtual void WhatsTheSpeed() =0; } Теперь, что означает это ключевое слово …
07 дек '17 в 08:56
1
ответ
Вызывая удалить на мелкую копию не взорвать
В приведенном ниже коде память выделяется для целого числа, а затем делается неглубокая копия и, наконец, вызывается удаление. Как он по-прежнему печатает 23 в качестве вывода и почему вызов delete не вызывает q, вызывает исключение времени выполнен…
12 сен '18 в 09:42
3
ответа
Удаление общего списка без указателей
У меня есть общий список с шаблоном template<class t> class GenericList { //the data is storeed in a chained list, this is not really important. struct c_list { t data; c_list* next; ...constructor... }; public: bool isDelete; GenericList() : …
11 апр '11 в 17:31
1
ответ
Ошибка при тестировании "Синглтон с новым и удаленным (C++)"
Я прочитал эту ссылку о новых и удалить в C++. Есть код, который реализовал шаблон Singleton. Я проверил этот код: #include <iostream> #include <memory> class Singleton { static Singleton *instance; static std::size_t refcount; std::stri…
21 июл '16 в 11:35
3
ответа
C++ delete[] против delete в массиве массивов
Я знаю, что если я использую new[], я должен удалить [], но это мое сомнение: Декларация: char **data; // This will be a bi-dimensional array Построить: data = new char*[10]; for (int i=0; i<10; ++i) { data[i] = new char[128]; } уничтожить: for (…
06 янв '15 в 18:18
2
ответа
Перегрузка удаления оператора C++ не работает для производного класса
Я пытаюсь перегрузить специфичные для класса операторы new и delete, чтобы использовать собственный распределитель, для некоторого абстрактного базового класса: class Base abstract { public: void * operator new (size_t sz) { return tc_malloc(sz); } …
30 янв '18 в 10:54
2
ответа
Утечка памяти после наведения на НОВЫЙ объект
struct StructA { StructA(parameters) { ... } //StructA onstructor }; struct StructB { StructA *pObjectA; int counter = 0; void function() { if (counter < 1) { pObjectA = new StructA[100]; } pObjectA[counter] = *new StructA(parameters); //Memory l…
07 дек '18 в 18:51
2
ответа
В C++ определено ли поведение для удаления примитивного типа, такого как uint32_t, через char*?
Определенное поведение имеет следующее? uint32_t* p = new uint32_t(); char* p2 = reinterpret_cast<char*>(p); delete p2; (Существует ли стандартная цитата, относящаяся к этому?) Я знаю, что существуют альтернативные варианты, но мне просто любо…
17 янв '19 в 03:16
2
ответа
Замена delete в C++, неверная информация
Я пытаюсь (и решил) проблему с 16-байтовыми проблемами выравнивания с классом, который содержит оптимизированные SSE члены. Но что меня беспокоит, так это большая часть примеров, которые я нашел в Интернете, которые содержат строку кода, которая мне…
25 июл '12 в 08:41