Re[4]: переопределить new/delete для конкретного кода
От: Boom Россия http://bcbdev.hypermart.net
Дата: 18.10.06 09:50
Оценка:
B>>>>Где-то в RTL определены new/delete. Мне надо определить свои new/delete таким образом, что бы для моего кода гарантированно использовались мои new/delete. Для классов это просто. А вот как сделать, что бы и для обычных типов (char *a=new char[10] работало? Тулзы из RVCT 2.2, хотя хотелось бы платформеннонезависимого решения. Т.е. мне не очень понятно, как гарантировать, что бы в моем коде линкер взял именно мой new, а не библиотечный. Возможно как-то это сделать?
_IN>>>Мыло дай, зашлю пример.
B>>boom гав-гав kis точка-точка ru (в kis — одна 's')
_IN>Отправил....

Получил, спасибо! Однако присланый код несколько не о том Меня интересовала не собственно перегрузка new/delete, а... ммм... наличие нескольких разных new/delete в одной большой программе (утрированно, что бы каждый функционально законченый компонент имел свою пару new/delete)...

Немного поясню. Есть очень большая embeded система у которой свой специфический memory manager (ф-ии типа allocate(size), deallocate(ptr)). Стандартные C'шные malloc/free/new/delete вроде как просто враперы для allocate/deallocate, но уверенности, что это так сейчас и будет в дальнейшем нет (не спрашивайте почему, это мне не подвластно ). Эта большая система состоит из кучи функционально законченых компонент, которые пользуются allocate/deallocate. Все, в основном, написано на C. В немногочисленные вкраплениях C++ имеют перегруженные new/delete как члены классов. Глобально new/delete нигде не перегружены и конструкции вида char *p = new char[10]; нигде не используются.

Сейчас в одном из компонентов хочется заюзать нормальные С++'ные механизмы, а, следовательно, для надежности надо перегрузить new/delete (конструкции вида char *p = allocator.allocate(10); использовать не хочется). Перегрузить-то я перегружу, но где гарантия, что я не напакостю другому компоненту? Или завтра другому компоненту не захочется так же перегрузить new/delete? Вот в этом мой вопрос и состоял
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.