tag:blogger.com,1999:blog-3179964835593137794.post5433339507756921882..comments2022-04-09T14:53:02.942+03:00Comments on Распутывая нити: Ловушка для меморилика (слайды)Andrey Valyaevhttp://www.blogger.com/profile/05020625213099509709noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-3179964835593137794.post-33478203296910645452009-03-01T20:29:00.000+03:002009-03-01T20:29:00.000+03:00LD_PRELOAD рулит пожизниLD_PRELOAD рулит пожизниAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-3179964835593137794.post-1114621455649101732009-02-24T17:54:00.000+03:002009-02-24T17:54:00.000+03:00Да, на самом деле, если надо писать свой менеджер ...Да, на самом деле, если надо писать свой менеджер кучи, то в принципе это может сработать. Нормальный вариант.<BR/><BR/>А strdup наверняка тоже использует malloc...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3179964835593137794.post-24652550226986832662009-02-24T15:59:00.000+03:002009-02-24T15:59:00.000+03:002coff: Это конечно сработает. Но есть одно но...Дл...2coff: Это конечно сработает. Но есть одно но...<BR/><BR/>Для этого еще требуется перекомпиляция проекта. И всех прилегающих к нему библиотек.<BR/><BR/>И __dbg_malloc всеравно надо реализовывать или взять готовый у кого нибудь. Там зачем изобретать велосипед с #define, если всеравно необходимо линковаться с отладочным менеджером хипа?<BR/><BR/>Можно конечно обложить весь код дефайнами, ради теста (sic!), только смысл?Андрей Валяевhttps://www.blogger.com/profile/11584397745995226795noreply@blogger.comtag:blogger.com,1999:blog-3179964835593137794.post-14183913971741134102009-02-24T15:49:00.000+03:002009-02-24T15:49:00.000+03:00Почему не универсальное? Нормальная имхо...А с new...Почему не универсальное? Нормальная имхо...<BR/><BR/>А с new/delete - просто определяешь в глобальном пространстве имен<BR/>void* operator new( size_t n )<BR/>{<BR/> return malloc( n );<BR/>}<BR/>void operator delete( void *p )<BR/>{<BR/> free( p );<BR/>}<BR/>// то же и для operator new[], ...<BR/>Или я что-то недопонял?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3179964835593137794.post-12128158775021776172009-02-20T21:29:00.000+03:002009-02-20T21:29:00.000+03:00Конечно, через define мы можем переопределить mall...Конечно, через define мы можем переопределить malloc, хотя и это не универсальное решение...<BR/><BR/>Но как быть с new/delete? Их не так то просто заменить на имена своих функций...Андрей Валяевhttps://www.blogger.com/profile/11584397745995226795noreply@blogger.comtag:blogger.com,1999:blog-3179964835593137794.post-18243066569009208152009-02-20T19:30:00.000+03:002009-02-20T19:30:00.000+03:00Что же касается менеджера памяти, то переопределив...<I>Что же касается менеджера памяти, то переопределив malloc во FreeBSD мы потеряли всякую возможность воспользоваться стандартным, и вынуждены писать свой.</I><BR/>Всегда есть возможность написать что-нибудь типа<BR/>#ifdef _DEBUG<BR/># define malloc __dbg_malloc<BR/>#endif<BR/>Когда нужен стандартный менеджер -<BR/>#undef malloc<BR/><BR/>Читаю я все это и понимаю, как много надо программерам делать, когда нет некоторых элементарных вещей... и как хорошо, что в MSVC есть crtdbg.h :-) Сами его используем.Anonymousnoreply@blogger.com