Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > Как узнать размер памяти, подлежащей delete |
Автор: proc_maker 23.3.2007, 13:00 |
Привет! Установил хук на __malloc_hook и __free_hook чтобы узнать сколько памяти выделено и сколько высвобождено. Вопрос, если в __malloc_hook есть размер сколько надо выделить, то в хуке на free его нет. Как узнать размер памяти, на который указывает переданный указатель, подлежащий освобождению. Спасибо! |
Автор: MAKCim 23.3.2007, 14:45 | ||||
боюсь никак но есть еще одно извращение ![]() ведем список выделенных областей
в __malloc_hook создаем структуру и заполняем ее (после вызова malloc()) во __free_hook сканируем список в поисках нужного `mm_address' из найденной структуры получаем `mm_size' PS. для получения памяти под структуру mm_area в malloc() делаем следующее
|
Автор: proc_maker 23.3.2007, 16:38 |
Огромное спасибо! 4 месяца бился с проблемой. Программа (огромное спасибо ее авторам) valgrind сегодня показала то что я не видел через mtrace и собирался сделать через хуки. Проблема заключалась в том что выделялась память через new а удалялась через free, и кое-де наоборот. Странно, но я всегда был уверен что по сути дела это одно и то же. Но именно это и было проблемой почему не отпускалась cached memory в топике, написанном мною вчера. Еще раз всем СПАСИБО!!! |