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 » Mon Dec 22, 2008 6:36 pm

Возможно-ли wxWidgets научить своему MemoryManager'у?

syber
Experienced Solver
Experienced Solver
Posts: 53
Joined: Thu Apr 27, 2006 1:34 pm

Post by syber » Tue Dec 23, 2008 7:24 am

хмммм.. а причем тут управление памятью и 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 » Thu Dec 25, 2008 8:35 pm

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

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

При использовании msvc можно посмотреть как это делается в файлах:
1. wxWidgets/include/wx/msw/msvcrt.h
2. crtdbg.h - из студии

User avatar
T-Rex
Moderator
Moderator
Posts: 1188
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex » Fri Dec 26, 2008 3:49 pm

Не учи людей плохому. В 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 » Wed Jan 07, 2009 6:14 pm

Если в библиотеке уже переопределён оператор new. То как мне посмотреть течёт-ли моё приложение или нет?

User avatar
T-Rex
Moderator
Moderator
Posts: 1188
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex » Wed Jan 07, 2009 9:08 pm

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 » Wed Jan 07, 2009 9:28 pm

T-Rex wrote:По поводу же оператора new. В wx переопределен delete, думаю можно посмотреть как там сделано и сделать так же для new.
Но ээ.. зачем? Достаточно все делать по правилам и можно быть увереным что все пучком. Ну и отладчик в Visual Studio нормально лики все показывает.
Человеку свойственно ошибаться, assert'ы не зря придуманы.

User avatar
T-Rex
Moderator
Moderator
Posts: 1188
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex » Wed Jan 07, 2009 9:35 pm

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 » Wed Jan 07, 2009 11:56 pm

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

#define wxUSE_DEBUG_CONTEXT 1
#define wxUSE_MEMORY_TRACING 1

Post Reply