![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Count0 |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 17 Регистрация: 30.7.2011 Пользователь №: 2772 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Добрый день. Существует ли возможность подменять вызовы служебных слов new и delete пользовательской функцией во всех функциях, объявленных в dll и вызванных из определенного класса?
Перегрузка операторов new(size_t) и delete(void*) не подходят, так как необходима работа с примитивными типами, а перегрузка глобальных операторов затронет и часть программы не связанную с dll (хотя глобальная перегрузка в рамках одного класса подойдет). Заранее благодарен. |
|
|
![]() |
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
Тут теория и про ELF, и про PE:
http://www.iecc.com/linker/linker10.html Может, ещё вот это пригодится: http://www.symantec.com/connect/articles/d...indows-part-two http://www.cs.umd.edu/Library/TRs/CS-TR-4585/CS-TR-4585.pdf система, как я понимаю, венда? а то в вопросе система не указана, но судя по "dll" - венда. и ещё: сорцы исходной библиотеки имеются? если нет, то есть ли статический вариант этой библиотеки? в венде пространства имён загружаемых модулей разделены. теоретически, должно быть можно перегрузить одну из функций без особого геморроя. я предполагаю, что нужно сделать библиотеку с перегруженной функцией в пространстве std, с прилинкованной исходной, с включением зависимых библиотек(не помню на память эту опцию линкера, но она есть). а потом динамически линковать её к основному модулю. как-то так. но проверить не могу, ибо дома венды у меня нет. в линюксе это значительно сложнее. Сообщение отредактировал Iron Bug - 20.11.2011, 0:12 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 3.6.2025, 14:14 |