![]() |
![]() ![]() ![]() ![]() |
|
Освобождение памяти 2Delphi , Синтаксис , Память и Указатели
unit MemMan;
interface
uses
StdCtrls, Classes;
var
AllocCount, FreeCount: Integer;
AllocatedList: TList;
type
TCountButton = class(TButton)
protected
class function NewInstance: TObject; override;
procedure FreeInstance; override;
end;
implementation
uses
Windows, SysUtils;
class function TCountButton.NewInstance: TObject;
begin
Inc(AllocCount);
Result := inherited NewInstance;
AllocatedList.Add(Result);
end;
procedure TCountButton.FreeInstance;
var
nItem: Integer;
begin
Inc(FreeCount);
nItem := AllocatedList.IndexOf(self);
AllocatedList.Delete(nItem);
inherited FreeInstance;
end;
initialization
AllocatedList := TList.Create;
finalization
if (AllocCount - FreeCount) <> 0 then
MessageBox(0, pChar(
'Objects left: ' + IntToStr(AllocCount - FreeCount)),
'MemManager', mb_ok);
AllocatedList.Free;
end.
Скачать весь проект
Программный модуль управления памятью в Delphi, написанный на языке Pascal. Он предназначен для отслеживания количества объектов, выделенных и освобожденных, а также для отображения сообщения о любых неосвобожденных объектах в конце программы. В этом коде есть следующая структура:
Цель этого кода - продемонстрировать, как можно реализовать пользовательский механизм управления памятью в Delphi, который может быть полезен в ситуациях, когда механизм уборки мусора по умолчанию недостаточен или неэффективен. Некоторые возможные улучшения:
В статье описывается пример создания менеджера памяти в Delphi, который позволяет отслеживать количество выделенной памяти и предупреждать о неосвобожденных объектах. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Память и Указатели ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||