Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
#1

Можно ли обобщить оператор delete ? - C++

19.01.2013, 21:21. Просмотров 309. Ответов 6
Метки нет (Все метки)

Здравствуйте! Есть некоторый класс в котором есть указатель которому присваивается некоторое значение "из-вне" так сказать, так вот его деструктор должен освобождать память на которую указывает этот указатель. Но классу ничего не известно о тому на что указывает этот указатель (массив/переменная), и надо как-то удалять, если использовать для этого:
C++
1
delete [] pointer;
не вызовет ли это у меня каких-либо ошибок?
Пробовал:
C++
1
2
char *k=new char ; *k=0;
delete [] k;
вроде как все живы в результате (MinGW), но может есть какие-то подводные камни?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2013, 21:21     Можно ли обобщить оператор delete ?
Посмотрите здесь:

Хочу понять когда можно делать оператор delete - C++
совсем новичок, а в книге толком не объясняется, помогите понять суть плиз Вот очень простой код: #include <windows.h> class...

Оператор delete[] - C++
Салют! тут вот в чем вопрос... Если с помощью new выделена память под несколько, скажем, массивов, то с помощью оператор delete удалять...

Оператор delete - C++
Написал небольшую программу и в просмотрел каждую строчку в отладчике. И получается что сразу же после оператора delete p_val; значение в...

Оператор delete[] - C++
Код: #include <iostream> #include <cstdlib> #include <ctime> #define stop __asm nop int main() { int N,M; ...

оператор delete - C++
#include <iostream> #include <clocale> #include <iomanip> using namespace std; int main() { setlocale (LC_ALL,"russian"); ...

Оператор delete - C++
Вчера заметил, но ответа в сети так и не нашел: int *i = new int(5); cout << *i << endl; delete i; int p = *i; cout << p << ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wolkodav
602 / 455 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
19.01.2013, 21:23     Можно ли обобщить оператор delete ? #2
Да нет. Просто освобождаете память из под указателя.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.01.2013, 21:24     Можно ли обобщить оператор delete ? #3
их не просто так сделали разными. если у вас на вашем компиляторе ничего плохого не происходит, то это не значит, что не произойдет на других или на том же, но с другими настройками. или например попадется какой-нибудь тип, для которого операторы detele и delete[] написали по разному и ведут они себя по разному. вот и получите глюк. короче, так делать нельзя.
popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
19.01.2013, 21:26  [ТС]     Можно ли обобщить оператор delete ? #4
Цитата Сообщение от Wolkodav Посмотреть сообщение
Да нет. Просто освобождаете память из под указателя.
ну просто думал что не с проста же есть два оператора delete и delete []
MrGluck
Модератор
Эксперт CЭксперт С++
7178 / 4344 / 634
Регистрация: 29.11.2010
Сообщений: 11,822
19.01.2013, 21:29     Можно ли обобщить оператор delete ? #5
Цитата Сообщение от popelyuk Посмотреть сообщение
ну просто думал что не с проста же есть два оператора delete и delete []
не с проста. Запись неверная, результат не определен по стандарту.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
19.01.2013, 21:31     Можно ли обобщить оператор delete ? #6
popelyuk, delete - для указателя на одну переменную, а delete [] - для массива, соответственно. Часто вызывает ошибки, если не правильно delete[] или delete использовать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2013, 21:46     Можно ли обобщить оператор delete ?
Еще ссылки по теме:

оператор delete[] - C++
Применение delete (без ) к указателю на массив освобождает только нулевой элемент, а оставшиеся создают утечку памяти, но как объяснить...

Оператор delete в деструкторе - C++
Здравствуйте, нужна помощь, есть класс и функция к которую передается этот класс: #include<iostream> using namespace std; class...

Нужно ли тут вызывать оператор delete - C++
Всем здрасьте. Тут встал вопрос об операторе delete. struct x { //... }; x* y; y = new x; //...

Что значит обобщить базовый классы до некого абстрактного класса - C++
Что значит обобщить базовый классы до некого абстрактного класса??


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
19.01.2013, 21:46     Можно ли обобщить оператор delete ? #7
popelyuk, уберите доступ к голому указателю из паблика и напишите к нему необходимые методы. Соответственно, для создания массива будет вызываться один метод, а для одиночной переменной - другой. И можно будет запоминать, что именно было вызвано.
Yandex
Объявления
19.01.2013, 21:46     Можно ли обобщить оператор delete ?
Ответ Создать тему
Опции темы

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