![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
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 раз(а) Репутация: ![]() ![]() ![]() |
перегрузка должна сработать, только линковать надо вручную: сначала библиоткеку с перегрузкой, а потом, отдельно - свою часть с нормальной библиотекой.
либо перегружать всё, а в своих методах поставить какой-нить define и вызывать другие реализации. можно использовать namespace'ы. Сообщение отредактировал Iron Bug - 19.11.2011, 16:05 |
|
|
Count0 |
![]()
Сообщение
#3
|
Студент ![]() Группа: Новичок Сообщений: 17 Регистрация: 30.7.2011 Пользователь №: 2772 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
перегрузка должна сработать, только линковать надо вручную: сначала библиоткеку с перегрузкой, а потом, отдельно - свою часть с нормальной библиотекой. либо перегружать всё, а в своих методах поставить какой-нить define и вызывать другие реализации. можно использовать namespace'ы. С namespace не проходит оператор new(size_t) может быть определен только в глобальном пространстве имен или переопределен для конкретного класса Иначе ошибка: 'void* MemorySafe::operator new(size_t)' may not be declared within a namespace http://stackoverflow.com/questions/1568168/testoperator-new - аналогичный пример с объяснениями, вдруг кому-то пригодится. А можно ссылку на материал, поясняющий механизм линковки библиотек? |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 8.6.2025, 16:10 |