Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: breakpoints на выделение и освобождение памяти в VC++  (Прочитано 9876 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
psl
Гость
« : 26-02-2005 07:47 » new

Доброго времени суток!

Уважаемые, Как поставить сабж?

Есть ли тулзы, которые бы вели статистику в каком куске кода был выделен/освобожден блок памяти конкретного указателя, желательно с поддержкой символьных имен/отладочной информации VC6.

Если кто-нибудь может помочь - распишите пожалуйста решение максимально подробно
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #1 : 28-02-2005 08:45 » 

Вообще, вроде бы, это что-то типа профилирования программы.
Профилирование - насколько мне известно - позволяет оценить время выполнения отдельных блоков, но, возможно, еще и ведет учет памяти?
Profiler - стандартная тулза к MSVS.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 28-02-2005 10:15 » 

В Visual C++ есть CRT Debug Heap. Чтобы его использовать, необходимо подключить файл crtdbg.h, обычно его включают в stdafx.h
После чего можно бороться с утечками памяти с помощью _CrtDumpMemoryLeaks() или устаносить свой обработчик выделения памяти _CrtSetAllocHook(), да много чего еще можно сделать. Более подробно описано в документации.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 28-02-2005 14:06 » 

Попробуй добавить в начале каждого .СРР после инклудов
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
psl
Гость
« Ответ #4 : 28-02-2005 20:44 » 

не интересуют утечки памяти - интересует статистика выделения/освобождения памяти привязанная к символьным именам и участкам кода, где она была произведена.

Перевод статьи из MSDN: http://www.rsdn.ru/article/vcpp/leaks.xml

PS:  _CrtDumpMemoryLeaks() и _CrtSetAllocHook() - неужели придется все делать ручками Не понял  Жаль((
Записан
Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 01-03-2005 09:05 » 

Если интересует только количество выделенной памяти, то можно использовать _CrtMemState/_CrtMemCheckpoint/_CrtMemDumpStatistics, кратко об этом написано в приведенной выше статье.
Если же надо статистику по выделению памяти в определнных участках кода, то придется либо писать самому, либо использовать специальные средства, типа профайлеров (NuMega BoundsChecker) или более продвинутых отладочных библиотек.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines