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

C ++ Начинающий Удалить код
Я пытаюсь динамически выделить память в куче, а затем удалить выделенную память. Ниже приведен код, который доставляет мне трудности: // String.cpp #include "String.h" String::String() {} String::String(char* source) { this->Size =...
481 просмотров
schedule 07.09.2021

Удалит ли [] с помощью void * вызовет утечку памяти?
Возможный дубликат: Насколько это безопасно? удалить недействительный указатель? Будет ли следующий код вызывать утечку памяти? void *ptr = new long [10]; delete[] ptr; // note: ptr is a void* [РЕДАКТИРОВАТЬ] Приведенный выше...
861 просмотров
schedule 08.10.2021

Почему мое приложение вылетает при удалении?
while(!m_RemoveNodeList.empty()) { list<CNode *>::const_iterator const it = m_RemoveNodeList.begin(); CNode * const pNode = *it; ASSERT(pNode != NULL); m_NodeList.remove( pNode ); delete pNode; // crashing here...
968 просмотров
schedule 22.11.2021

Утечка памяти деструктора C ++
Относительно простой вопрос о правильной обработке деструкторов ... Сначала у меня есть класс, который выглядит примерно так: class Foo { public: ReleaseObjects() { for (std::map<size_t, Object*>::iterator iter =...
3343 просмотров

Программа вылетает при удалении массива указателей в структуре
Вылетает при появлении команды удаления. Предполагается создать структуру с указателями на массивы, заполнить их случайными числами, а затем освободить память. Работает нормально до тех пор, пока не будет выполнена команда удаления, в которой...
1022 просмотров
schedule 03.11.2021

Удаленный выделенный элемент в куче оценивается как истина
struct Set { int a; Set() : a(30){}; bool operator>( const Set& ref ) const { return ref.a > this->a; }; }; int _tmain(int argc, _TCHAR* argv[]) { vector<Set>m_set; m_set.push_back( (*(new...
69 просмотров
schedule 13.11.2021

перегрузить оператор delete [] с определенными аргументами
Мы пытаемся перегрузить оператор delete [] конкретными аргументами. Как правильно это называть? Мы используем компилятор GNU и получаем ошибки компилятора со всеми этими примерами: #include<memory> using namespace std; typedef unsigned int...
2495 просмотров
schedule 08.10.2021

Преобразование оператора void * () по-прежнему является частью библиотеки C ++?
Рассмотрим эту программу: #include <iostream> int main() { delete std::cout; } AFAIK функция преобразования operator void * () const была удалена из С ++ 11. Таким образом, эта программа должна потерпеть неудачу при компиляции на...
159 просмотров

Сбой деструктора при удалении массива указателей в C ++
Я создал класс с именем cell . Внутри этого класса есть массив cell указателей. Заголовок выглядит так: class cell { public: cell(); cell *c[8]; void creatcells(); virtual ~cell(); .. } и файл cpp выглядит так:...
569 просмотров
schedule 13.09.2021

Деструктор вызвал std :: vector ‹Тип класса› недействительный for_each
Я читал о delete[] , new[] , что-есть-правило- из трех , освобождение-объекты-хранимые-в-векторе , delete-vector-class-member и обнаружив Возникло исключение: нарушение прав доступа для чтения. Я определил базовый класс class...
56 просмотров

Как понять, что в C ++ удален указатель
Когда я пишу такой код, он печатает «не удалено». Как я могу на 100% убедиться, удален указатель или нет? int* a = new int; *a = 5; delete a; if (!a) //I also tried a == NULL but got same result...
3950 просмотров
schedule 06.02.2022

Установка ограничений на перегрузку new и delete
Можно ли наложить ограничения на операторы перегрузки new и delete? Мой перегруженный новый файл связан с моей тестовой программой в другом файле. Сценарий такой: if(condition is satisfied) call overloaded new else call the actual new...
281 просмотров

Удалить указатель в С++ меня смутил
**struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; ListNode* Merge(ListNode* list1, ListNode* list2){//list1 2; list2 4 ListNode* result = new ListNode(0); ListNode* travel =...
140 просмотров
schedule 19.02.2022

C++, удалить [] foo и удалить foo
Я просто еще не могу привыкнуть к синтаксису C++.. любое интуитивно понятное объяснение //delete [] foo // and //delete foo[] был бы очень признателен. если быть более точным, скажем, у меня есть int** foo = new int*[50] for (int index =...
125 просмотров
schedule 05.03.2022

Как удалить символ * в C ++
Каждый раз, когда я выполняю это ... я получаю сообщение об ошибке: char * var= new char[256]; var= "hola mundo\0"; delete var; я получаю ошибку: malloc: *** ошибка для объекта 0x10007fd20: освобождаемый указатель не был выделен ***...
3232 просмотров
schedule 15.03.2022

Как удалить указатель после приведения к void* и обратно
В рамках класса «сообщение» я пытаюсь передавать указатели разных типов, приводя их к указателям типа void* и сохраняя их в классе-оболочке («MsgData»), который запоминает исходный тип указателя. Например, логический указатель: bool* data = new...
312 просмотров

Поскольку оператор удаления освобождает память, зачем мне деструктор?
Из часто задаваемых вопросов по С++: http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.9 Помните: delete p делает две вещи: вызывает деструктор и освобождает память. Если delete освобождает память, то зачем тут деструктор?
3448 просмотров
schedule 20.03.2022

оператор new() ведет себя по-разному при удалении оператора delete() в зависимости от наличия конструктора по умолчанию
Создание нового объекта класса C с оператором new() дает здесь ошибку: class C { public: C() {} virtual ~C() {} void operator delete(void*) = delete; }; int main() { C* c = new C; } с C2280: 'void C::operator delete(void...
339 просмотров

Почему удаление массива символов вызывает сбой после присвоения значения оператором =?
Это мой код. Я создаю массив символов и назначаю ему строковый литерал оператором =. После чего я освобождаю его, удаляя. Однако это вызывает сегментацию. Но он отлично работает с strcpy. Кроме того, всегда ли массив символов назначается strcpy?...
51 просмотров
schedule 20.03.2022

C ++ путаница с оператором delete []
Изучаю указатели банкомата. и я запутался с оператором delete []. Вот пример: int* a = new int[12]; for (int i=0; i<12; i++) a[i]=123; delete[] a; for (int i=0; i<12; i++) cout <<a[i]<<" "; Если я понял правильно,...
71 просмотров
schedule 31.03.2022