В данном разделе я предлагаю реализацию модуля проверки утечки памяти. Нам необходимо создать новый модуль и определить два метода:
function CheckGetMem(Size: Integer): Pointer;
begin
Result := [Системный].GetMem(Size);
// Вставим здесь свой код
end;
function CheckFreeMem(Address: Pointer): Integer;
begin
Result := [Системный].FreeMem(Address);
// Вставим здесь свой код
end;
В разделе инициализации модуля запомним старый менеджер памяти и установим новый, который ссылается на созданные методы. В разделе деинициализации модуля проверим утечку памяти.
Это всё, что было нужно для проверки утечки памяти. Есть ещё требование, относящееся к размещению ссылки на этот модуль в проекте: он должен быть первым в списке модулей проекта (как модуль ShareMem).
Тестирование модуля производилось на Borland Delphi 7.0 с установленным SP1. На Borland Delphi 6.0 c установленным SP3 желаемого результата не получилось, т.к. в самих системных модулях есть утечка памяти.
Если хочешь скачать исходники, то щёлкай здесь.
18.10.2005 |