Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
popelyuk
8 / 8 / 2
Регистрация: 04.12.2012
Сообщений: 130
#1

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

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

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

Хочу понять когда можно делать оператор delete
совсем новичок, а в книге толком не объясняется, помогите понять суть плиз ...

оператор delete[]
Применение delete (без ) к указателю на массив освобождает только нулевой...

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

Оператор delete[]
Код: #include <iostream> #include <cstdlib> #include <ctime> #define ...

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

6
Wolkodav
609 / 462 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
19.01.2013, 21:23 #2
Да нет. Просто освобождаете память из под указателя.
0
DU
1486 / 1132 / 164
Регистрация: 05.12.2011
Сообщений: 2,279
19.01.2013, 21:24 #3
их не просто так сделали разными. если у вас на вашем компиляторе ничего плохого не происходит, то это не значит, что не произойдет на других или на том же, но с другими настройками. или например попадется какой-нибудь тип, для которого операторы detele и delete[] написали по разному и ведут они себя по разному. вот и получите глюк. короче, так делать нельзя.
0
popelyuk
8 / 8 / 2
Регистрация: 04.12.2012
Сообщений: 130
19.01.2013, 21:26  [ТС] #4
Цитата Сообщение от Wolkodav Посмотреть сообщение
Да нет. Просто освобождаете память из под указателя.
ну просто думал что не с проста же есть два оператора delete и delete []
0
MrGluck
Модератор
Эксперт CЭксперт С++
8075 / 4927 / 1431
Регистрация: 29.11.2010
Сообщений: 13,346
19.01.2013, 21:29 #5
Цитата Сообщение от popelyuk Посмотреть сообщение
ну просто думал что не с проста же есть два оператора delete и delete []
не с проста. Запись неверная, результат не определен по стандарту.
0
nexen
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
19.01.2013, 21:31 #6
popelyuk, delete - для указателя на одну переменную, а delete [] - для массива, соответственно. Часто вызывает ошибки, если не правильно delete[] или delete использовать
0
I.M.
567 / 550 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
19.01.2013, 21:46 #7
popelyuk, уберите доступ к голому указателю из паблика и напишите к нему необходимые методы. Соответственно, для создания массива будет вызываться один метод, а для одиночной переменной - другой. И можно будет запоминать, что именно было вызвано.
0
19.01.2013, 21:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2013, 21:46

Оператор delete
Написал небольшую программу и в просмотрел каждую строчку в отладчике. И...

оператор delete
#include <iostream> #include <clocale> #include <iomanip> using namespace...

Оператор delete в деструкторе
Здравствуйте, нужна помощь, есть класс и функция к которую передается этот...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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