Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конструктор ссылки? https://www.cyberforum.ru/ cpp/ thread92331.html
StateManager.h class StateManager{ public: typedef long state_type; typedef void (*executor)(int); StateManager::StateManager(state_type mainState, executor newExec); private: executor...
C++ zlib Двойное архивирование\разархивирование
Использую библиотеку zlib 1.2.3 Нужно сохранять массив объектов в файл и потом загружать её. Вес - 10 мегабайт. Решил сжать перед записью. Сделал... обнаружил что уже сжатый файл тоже бы мог сжаться...
C++ ОШИБКА Что за ошибка: Must use c++ for the type iostream?? https://www.cyberforum.ru/ cpp/ thread91688.html C++ пропадающее окно ещё раз здраствуйте. в предыдущий теме вы мне помогли https://www.cyberforum.ru/cpp/thread91603.html спасибо большое. но теперь у меня новая проблема. я использовал несколько програм втом числе и эту... https://www.cyberforum.ru/ cpp/ thread91622.html
C++ Внешние объекты в классе
Если класс исплользует какую то внешнюю переменную (например hWnd), то как будет более корректно его создать: class MyClass { private: HWND* _myWnd; public: MyClass(HWND* extWnd, ...)...
C++ Выделение памяти https://www.cyberforum.ru/ cpp/ thread91503.html
MyClass& DXI =* new MyClass(); Это корректный код для выделения памяти, чтобы к переменной можно было обращаться не по ссылке? delete &DXI; Это удалит выделенную память? Кроме того... если ...
C++ Как подключить .h файл дважды? https://www.cyberforum.ru/ cpp/ thread91267.html
Такая проблема: имеется файл lib.h и еще 2 файла: NewLib1.h и NewLib2.h, в каждый из которых включен предыдущий файл: #include "lib.h" Проблема возникает, когда я компилирую файл...
Borland не устанавливается на Windows 7 C++
Borland не устанавливается на Windows 7, в чем может быть проблема??
C++ Работа с другим консольным приложением https://www.cyberforum.ru/ cpp/ thread90817.html
у меня есть консольное приложение, которое выводит информацию на экран мне нужно написать программу которая запускала бы это приложение и считывала информацию с экрана Есть идеи? Заранее спасибо!
C++ ifstream / ofstream https://www.cyberforum.ru/ cpp/ thread90767.html
Доброго времени суток. И сразу к проблеме. Делаю вывод в файл объектов класса для их последующего считывания и обрабатывания. ofstream fout ("test.txt", ios::binary); fout.write((char*)...
C++ Создание дерева в родительском классе
Базовый класс используется для создания дерева. Потомки обрабатывают дерево по разному. class A { public: A() { loadTree(); } loadTree()
C++ Генератор судоку Маленькая проблемка с программой - в одном из 10 случаев программа зависает. Кому не сложно, прошу проверить и исправить. Вот полный работающий код: #include <iostream> #include <cstdlib>... https://www.cyberforum.ru/ cpp/ thread90576.html
Evg
Эксперт CАвтор FAQ
21192 / 8208 / 633
Регистрация: 30.03.2009
Сообщений: 22,520
Записей в блоге: 30
04.02.2010, 16:46 0

delete void* - C++ - Ответ 524750

04.02.2010, 16:46. Показов 4896. Ответов 24
Метки (Все метки)

Ответ

> Ну у списка есть дестуктор, он освободит ресурсы там

Ответ неверный. Собственно одно из стандартных заблуждений. Когда ты пишешь

C++
1
MyClass* MyObj = new MyClass;
то реально в этом месте делаются сразу два дейстия: выделение памяти и вызов конструктора. Конструктор память НЕ выделает, он только инициализирует поля. Т.е. этот код эквивалентен (по своей сути):

C++
1
2
MyClass* MyObj = (MyClass*) malloc (sizeof (MyClass));
MyObj->MyClass(); // условно обозначил вызов конструктора, как будто бы он есть процедура
Аналогично работает delete: сначала вызывается деструктор, а потом делается освобождение памяти. Чтобы вызвать деструктор, нужно знать тип, куда ссылается указатель (чтобы вызвать деструктор того класса, которым является объект). Чтобы освободить память, ничего кроме адреса знать не нужно, поскольку информация о размере выделенной памяти была записана в скрытых местах в момент вызова malloc'а

Вернуться к обсуждению:
delete void* C++
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2010, 16:46
Готовые ответы и решения:

Перенаправление из Void в другой Void
Решил я значит сделать себе терминал как в Fallout,и столкнулся с такой проблемой,из void нельзя...

Void * processor to (void(Args.) (*processor)
Здравствуйте. Имеем void* значением которого является адрес функции. Как скастить этот указатель в...

Где void?
Скорее всего тема опять будет пустовать, но я таки попробую. if ( __SETP__(_AH &amp; 0x44, 0) ) ...

delete vs. delete []
Всем привет, в разница использования delete и delete ? я читал, что delete используется для...

24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2010, 16:46

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Backspace и Delete
функция обрабатывает ввод символов 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, –. По нажатию клавиши Esc ввод...

Ошибка E2044 - operator delete must return void
Среда - С++ Builder 2006 Суть такова: Только начали изучать сишку. Выполняю домашку, нужно...

Как написать это - void fastcall TForml:oOp(void)?
Добрый день! Подскажите пожайлуста: Как написать это - void fastcall TForml:: DoOp(void)? Как...

Void To Bool
Как можно void преобразовать в bool? if(Skype1-&gt;Attach(6, VARIANT_TRUE)) { ShowMessage(&quot;ERROR&quot;);...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.