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

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

Восстановить пароль Регистрация
 
popelyuk
 Аватар для popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
19.01.2013, 21:21     Можно ли обобщить оператор delete ? #1
Здравствуйте! Есть некоторый класс в котором есть указатель которому присваивается некоторое значение "из-вне" так сказать, так вот его деструктор должен освобождать память на которую указывает этот указатель. Но классу ничего не известно о тому на что указывает этот указатель (массив/переменная), и надо как-то удалять, если использовать для этого:
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 ?
Посмотрите здесь:

C++ Оператор delete[]
оператор delete[] C++
Оператор delete C++
Оператор delete[] C++
Оператор delete C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
19.01.2013, 21:23     Можно ли обобщить оператор delete ? #2
Да нет. Просто освобождаете память из под указателя.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.01.2013, 21:24     Можно ли обобщить оператор delete ? #3
их не просто так сделали разными. если у вас на вашем компиляторе ничего плохого не происходит, то это не значит, что не произойдет на других или на том же, но с другими настройками. или например попадется какой-нибудь тип, для которого операторы detele и delete[] написали по разному и ведут они себя по разному. вот и получите глюк. короче, так делать нельзя.
popelyuk
 Аватар для popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
19.01.2013, 21:26  [ТС]     Можно ли обобщить оператор delete ? #4
Цитата Сообщение от Wolkodav Посмотреть сообщение
Да нет. Просто освобождаете память из под указателя.
ну просто думал что не с проста же есть два оператора delete и delete []
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
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 ?
Еще ссылки по теме:

C++ оператор delete
Оператор delete в деструкторе C++
C++ Хочу понять когда можно делать оператор delete

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

Или воспользуйтесь поиском по форуму:
I.M.
 Аватар для 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 ?
Ответ Создать тему
Опции темы

Текущее время: 10:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru