wxWidgets и оператор NEW. Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
Dmitry Krutskih
In need of some credit
In need of some credit
Posts: 7
Joined: Wed Dec 10, 2008 4:02 am
Contact:

wxWidgets и оператор NEW.

Post by Dmitry Krutskih »

Возможно-ли wxWidgets научить своему MemoryManager'у?
syber
Experienced Solver
Experienced Solver
Posts: 53
Joined: Thu Apr 27, 2006 1:34 pm

Post by syber »

хмммм.. а причем тут управление памятью и wxWidgets?
попробуй перегрузить оператор new - и управляй как хош!
Не понятно какая задача стоит, что нужно сделать в итоге?
Kolya
Experienced Solver
Experienced Solver
Posts: 85
Joined: Mon Dec 11, 2006 11:35 am
Location: /dev/null

Re: wxWidgets и оператор NEW.

Post by Kolya »

Думаю, что можно при помощи #define new переопределить свой оператор выделения памяти подобно тому, как это делают детекторы утечек памяти.

Но это сделать надо как для приложения, так и для библиотеки (путем модификации исходников). Что бы удалял объекты тот менеджер памяти, что их и создавал.

При использовании msvc можно посмотреть как это делается в файлах:
1. wxWidgets/include/wx/msw/msvcrt.h
2. crtdbg.h - из студии
User avatar
T-Rex
Moderator
Moderator
Posts: 1249
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex »

Не учи людей плохому. В wxWidgets уже есть переопределенный оператор delete из-за которого танцы с бубном в Windows по крайней мере, особенно когда MFC'шные библиотеки подключаешь сторонние.
Dmitry Krutskih
In need of some credit
In need of some credit
Posts: 7
Joined: Wed Dec 10, 2008 4:02 am
Contact:

Post by Dmitry Krutskih »

Если в библиотеке уже переопределён оператор new. То как мне посмотреть течёт-ли моё приложение или нет?
User avatar
T-Rex
Moderator
Moderator
Posts: 1249
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex »

Dmitry Krutskih wrote:Если в библиотеке уже переопределён оператор new. То как мне посмотреть течёт-ли моё приложение или нет?
Так а чем собсно не подходит использование библиотеки QA которая в дистрибе есть. Вроде еще AQTime может лики выискивать, триальной версии на первое время должно хватить.
По поводу же оператора new. В wx переопределен delete, думаю можно посмотреть как там сделано и сделать так же для new.
Но ээ.. зачем? Достаточно все делать по правилам и можно быть увереным что все пучком. Ну и отладчик в Visual Studio нормально лики все показывает.
Dmitry Krutskih
In need of some credit
In need of some credit
Posts: 7
Joined: Wed Dec 10, 2008 4:02 am
Contact:

Post by Dmitry Krutskih »

T-Rex wrote:По поводу же оператора new. В wx переопределен delete, думаю можно посмотреть как там сделано и сделать так же для new.
Но ээ.. зачем? Достаточно все делать по правилам и можно быть увереным что все пучком. Ну и отладчик в Visual Studio нормально лики все показывает.
Человеку свойственно ошибаться, assert'ы не зря придуманы.
User avatar
T-Rex
Moderator
Moderator
Posts: 1249
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex »

Dmitry Krutskih wrote: Человеку свойственно ошибаться, assert'ы не зря придуманы.
Я не очень понял ход этой мысли... %)
Dmitry Krutskih
In need of some credit
In need of some credit
Posts: 7
Joined: Wed Dec 10, 2008 4:02 am
Contact:

Post by Dmitry Krutskih »

T-Rex wrote:Я не очень понял ход этой мысли... %)
Это тема для отдельного разговора. То чего я хотел, я добился настройками библиотеки:

#define wxUSE_DEBUG_CONTEXT 1
#define wxUSE_MEMORY_TRACING 1
Post Reply