![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| TP@MB@Y |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
Хочу отследить мусор в своей проге, но не знаю как в с++ посматреть размер динамической кучи...
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
По-моему, ни в С++, ни в любом другом языке это невозможно, так как память из кучи выделяет операционная система. Физически же это может быть почти все, что угодно.
|
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 1 Всего: 20 |
TheapStatus - была такая функция у Борланда.
|
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
в мсдне можно посмотреть раздел Memory Allocation
|
|||
|
||||
| TP@MB@Y |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
JackYF
Вот как я делал на паскале:
Т.е. функция MemAvail возвращает доступную память chaos MSDN у меня пока нету En_t_end Если была то какой модуль надо подключить? |
|||
|
||||
| LPBOY |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 12.7.2005 Репутация: 20 Всего: 20 |
Посмотел на MSDN - тебе нужны функции _Crt* из #include <crtdbg.h> (если у тебя MSVC).
Вот пример.
Все это работает только в Debug mode. В релизе расширяется в пустую инструкцию.
msdn.com Это сообщение отредактировал(а) LPBOY - 3.8.2005, 00:52 --------------------
Каждый человек по-своему прав, а по-моему нет... |
||||
|
|||||
| TP@MB@Y |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
LPBOY
Спасибо! Я немного модифицировал код:
Выводит мусор в байтах. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
А мусор - это что? Неосвобожденная память?
Так в режиме отладки VC и сам тебе про все memory leaks расскажет. А если правильные слова будешь в начало каждого cpp-файла вставлять, то покажет также где (файл, строка) этот указатель был выделен. Наверняка, другие компиляторы тоже что-то подобное умеют. -------------------- ... |
|||
|
||||
| LPBOY |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 12.7.2005 Репутация: 20 Всего: 20 |
Очень интересно, а какие конкретно "правильные слова" вставлять надо? --------------------
Каждый человек по-своему прав, а по-моему нет... |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
А вот какие:
Они автоматически вставляются во все файлы, которые генерирует визард, а в те, которые ручками создаешь, можешь ручками и вставлять, а можно скриптик какой-нить написать. Еще раз повторю, это только к MSVC относится. -------------------- ... |
|||
|
||||
| LPBOY |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 12.7.2005 Репутация: 20 Всего: 20 |
Спасибо... Глянул в MSDN. А вне MFC проекта это будет работать?
--------------------
Каждый человек по-своему прав, а по-моему нет... |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Не знаю, не пробовала...
Да вот прямо в примерчик LPBOY вставь и попробуй. PS На всякий случай, memory leaks смотри в панели output (или debug) после завершения программы. MessageBox тебе не покажут... Это сообщение отредактировал(а) Earnest - 3.8.2005, 19:02 -------------------- ... |
|||
|
||||
| LPBOY |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 12.7.2005 Репутация: 20 Всего: 20 |
Earnest,
Это MFC-шная фича, а не компилятора, как я понял. Макросы вызывают MFCшные функции, которые вызывают crt. В примерчик свой я вставил - ничего не произошло... Я засомневался просто из-за того что по инету гуляет статья где один чувак мучается, перегружает глоб. опре-ры new, delete и т.д. для той же цели, что можно добиться 5-ю строчками которые ты привела --------------------
Каждый человек по-своему прав, а по-моему нет... |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Хм... точно ... DEBUG_NEW определено в afx.h, стало быть, MFC.
Но, однако, ищем, скажем, AfxDumpMemoryLeaks() (код-то MFC у нас есть). И что же мы находим? А вот что:
Другие функции не смотрела, но, думаю, и там примерно так же. Их там штук пять рядом с DEBUG_NEW объявлено. Так что спиши слова и вперед. В любом случае, это проще, чем самому париться и разбираться с устройством памяти. Или подключи библиотеку MFC как static и пользуйся - жалко, что ли. А тот чувак - ну мало ли на свете народу, которые сначала создают себе проблему, а потом героически преодолевают трудности. Да у нас вся страна такая. -------------------- ... |
|||
|
||||
| Ni@m |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 11.3.2004 Где: почти Киев Репутация: 0 Всего: 6 |
Сам занялся сейчас таким делом. Потому что откуда-то появились утечки.
Вот посмотри тут. Пока ничего из этого не пользовал. Посмотри тут. --------------------
Обучение - как переливание воды из одной чашки в другую: всегда лучше, чтоб чашка со знаниями нахордилась выше. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |