| Aelita |
21.11.2010 1:35
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Женский Репутация: 0 |
Я работаю во Free Pascal под DOS32 (Go32v2).
Периодически возникает задача выяснить, освобождает ли программа память или где-то есть дыра для утечки. Раньше для этого можно было использовать такие удобные переменные как MemAvail, HeapSize. Даже если они работали не вполне точно, утечка памяти была наглядно видна. Теперь их, как известно, во Free Pascal нет... Вопрос к профи: существуют ли какие-нибудь Units, не входящие во стандартный комплект Free Pascal, в которых были бы некоторые аналоги этих функций (работающие в том числе с Go32V2 -- DOS32) ? Сообщение отредактировано: Aelita - 21.11.2010 1:45 |
![]() ![]() |
| volvo |
21.11.2010 4:12
Сообщение
#2
|
|
Гость |
Если утечек нет, то возвращается другой отчет.
Смотри... (GO32V2 не установлен здесь, поэтому показываю на примере Win32-приложения). Допустим, имеем код, который заведомо без утечек:
, после запуска и завершения работы программы, в консоли наблюдаем отчет:
Утечек нет, раз "0 unfreed memory blocks" Теперь внесем утечку, "забудем" вернуть память выделенную под p2: uses heaptrc; и смотрим на результат:
200 байт - утечка... Если будешь компилировать еще и с ключом -gl, то ко всему прочему получишь и место, где была выделена "утекающая" память. |
Aelita Как отследить утечку памяти во Free Pascal под Go32V2 (DOS32)? 21.11.2010 1:35
volvo А что, разве модуль heaptrc (компиляция с ключом -... 21.11.2010 1:56
Aelita А как с его помощью получить полный объем heap-а и... 21.11.2010 3:05
Aelita Полезная штука, огромное спасибо!
А с операци... 21.11.2010 19:49
volvo Будет, почему нет? Как раз для New/Dispose в перву... 21.11.2010 20:16
Гость Еще раз спасибо за исчерпывающий ответ!!... 22.11.2010 0:39![]() ![]() |
|
Текстовая версия | 13.12.2025 13:45 |