Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать размер памяти, подлежащей delete 
:(
    Опции темы
proc_maker
Дата 23.3.2007, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 11.11.2006

Репутация: 1
Всего: 1



Привет!

Установил хук на __malloc_hook и __free_hook чтобы узнать сколько памяти выделено и сколько высвобождено. Вопрос, если в __malloc_hook есть размер сколько надо выделить, то в хуке на free его нет. Как узнать размер памяти, на который указывает переданный указатель, подлежащий освобождению.

Спасибо!
PM MAIL ICQ Skype   Вверх
MAKCim
Дата 23.3.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



боюсь никак
но есть еще одно извращение  smile 
ведем список выделенных областей
Код

struct mm_area {
    void        *mm_address;
    size_t       mm_size;
};

в __malloc_hook создаем структуру и заполняем ее (после вызова malloc())
во __free_hook сканируем список в поисках нужного `mm_address'
из найденной структуры получаем `mm_size'

PS. для получения памяти под структуру mm_area
в malloc() делаем следующее
Код

malloc(<needed size> + sizeof(struct mm_area));



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
proc_maker
Дата 23.3.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 11.11.2006

Репутация: 1
Всего: 1



Огромное спасибо!
4 месяца бился с проблемой. Программа (огромное спасибо ее авторам) valgrind сегодня показала то что я не видел через mtrace и собирался сделать через хуки. Проблема заключалась в том что выделялась память через new а удалялась через free, и кое-де наоборот.

Странно, но я всегда был уверен что по сути дела это одно и то же. Но именно это и было проблемой почему не отпускалась cached memory в топике, написанном мною вчера.

Еще раз всем СПАСИБО!!!
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0885 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.