Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

delete и указатель на функцию

7.3K
10 августа 2007 года
LamerMFC
48 / / 17.09.2005
вот недавно нашел перечень вопросв по С++. один из них:
В чем специфика применения операции delete к указателям на функции?
до сих пор не могу найти ответа. Может кто подскажет?
2.0K
11 августа 2007 года
WidowMaker
212 / / 05.04.2005
Может речь об виртуальных деструкторах?
350
11 августа 2007 года
cheburator
589 / / 01.06.2006
Функция - это код, и он не уничтожается.
Соответственно, оператор delete к указателям на функции вообще неприменим. Насколько я понимаю.
309
11 августа 2007 года
el scorpio
1.1K / / 19.09.2006
Может быть, речь шла об использовании метода operator delete?
Переопределение стандартного оператора для определённого класса может реализовать какой-нибудь особенный процесс удаления объектов этого класса.
А функции находятся в области кода, и попытка записать туда что-либо неизбежно закончится ошибкой доступа.

Как исключение, теоретически возможно следующее.
 
Код:
char *pCode = new char [SIZE]; // Создаём область памяти
Загружаем_Из_Файла (Имя_Файла, pCode); // Загружаем файл с двоичным кодом
TFunction pFunction = (TFunction) pCode; // Приводим указатель
TResult Result = pFunction (Params); // Вызываем функцию
delete[] pCode; // Удаляем область памяти с кодом через указатель на char

Но в современных процессорах может (и должна) сработать защита от вирусов - блок, запрещающий передавать управление в области памяти, отличные от сегментов кода.
2.0K
11 августа 2007 года
WidowMaker
212 / / 05.04.2005
Цитата: cheburator
Функция - это код, и он не уничтожается.
Соответственно, оператор delete к указателям на функции вообще неприменим. Насколько я понимаю.



Я бы не относился буквально к слова LAmerMFC, иначе его слова выглядят как бред;) (имхо)Опять таки подчеркиваю, что речь возможно идет о виртуальных деструкторах, те перегрузки деструктора в потомках базового класса. Тут вам и delete, тут вам и указатели на ф-ции.

7.3K
13 августа 2007 года
LamerMFC
48 / / 17.09.2005
Цитата: WidowMaker
Я бы не относился буквально к слова LAmerMFC, иначе его слова выглядят как бред;)



Ну почему же сразу бред (какой невоспитанный). Вот вопросы: http://rsdn.ru/Forum/message/140030.1.aspx

а где-то ближе к концу и "бредовый". На все ответил кроме этого.

3
13 августа 2007 года
Green
4.8K / / 20.01.2000
Так там же и ответ есть:
[quote=RSDN Dima2]
Надо полагать, что это вопрос из серии — "расшатать чуткую нервную систему собеседуемого". Раз есть указатель значит его можно delete
[/quote]

На самом деле, думаю, ответ прост: функция не является объектом, сл-но delete к указателю на неё не применим.
7.3K
13 августа 2007 года
LamerMFC
48 / / 17.09.2005
Цитата: Green
На самом деле, думаю, ответ прост: функция не является объектом, сл-но delete к указателю на неё не применим.



Спасибо.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог