Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отладочный delete принимающий размер класса 
:(
    Опции темы
georain
Дата 14.1.2009, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 28.11.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Есть два типа перегруженных операторов delete:
Код

void operator delete(void * ptr);
void operator delete(void * ptr, size_t size);

второй принимает размер класса.

В оператор new можно добавлять параметры:
Код

void * operator new(size_t size, const char * str);


Код

new("Строка") SomeClass;

При выбросе исключения в конструкторе SomeClass вызывается delete соответствующий new
Код

void operator delete(void * ptr, const char * str);

Если такого оператора нет, то никакой оператор не будет вызван.

Задача 1:
Требуется иметь new с доп. параметрами и при этом delete принимающий размер

Задача 2:
Требуется иметь delete принимающий размер и доп. параметры
Код

delete ("Строка") ptr;


Все это должно работать при выбросе исключений.

Для чего это нужно: для создания отладочных new и delete, принимающих __FILE__, __LINE__.
Есть идея создать макрос NEW(SomeClass) и DELETE(ptr), (вставка FILE-LINE внутри) но это сами понимаете...
В крайнем случае макросы можно было бы иметь такие: NEW SomeClass и DELETE ptr, но как сделать такой NEW у меня идей нет.

PM MAIL   Вверх
ZeroPoint
Дата 21.1.2009, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.1.2009

Репутация: нет
Всего: нет



Не точно то, о чем спрашивалось, но очень похоже:

http://www.realcoding.net/article/view/109
PM MAIL   Вверх
just_geek
Дата 22.1.2009, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

Репутация: 2
Всего: 10



Цитата

Задача 1:
Требуется иметь new с доп. параметрами и при этом delete принимающий размер

а зачем тебе делет принимающий размер? он будет не корректно размер вычислять (особенно это касается delete[] )


Цитата

Задача 2:
Требуется иметь delete принимающий размер и доп. параметры


нельзя... только когда исключение кидается.
PM MAIL   Вверх
georain
Дата 23.1.2009, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 28.11.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата(just_geek @  22.1.2009,  08:03 Найти цитируемый пост)
а зачем тебе делет принимающий размер? он будет не корректно размер вычислять

delete принимающий размер корректно его вычисляет

Цитата(just_geek @  22.1.2009,  08:03 Найти цитируемый пост)
нельзя... только когда исключение кидается. 

хорошо, как его сделать чтобы только когда исключение кидается?
PM MAIL   Вверх
georain
Дата 23.1.2009, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 28.11.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата(ZeroPoint @  21.1.2009,  13:55 Найти цитируемый пост)
Не точно то, о чем спрашивалось, но очень похоже:
http://www.realcoding.net/article/view/109 

Да, статья говорит о идее испозьзовнаия, но там ничего не сказано что будет с этим кодом в случае исключений.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0685 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.