Содержание материала

 

Code:

unit MemMan;

 

interface

 

uses

StdCtrls, Classes;

 

var

AllocCount, FreeCount: Integer;

AllocatedList: TList;

 

type

TCountButton = class(TButton)

protected

   classfunction NewInstance: TObject; override;

   procedure FreeInstance; override;

end;

 

implementation

 

uses

Windows, SysUtils;

 

classfunction 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) <> 0then

   MessageBox(0, pChar(

     'Objects left: ' + IntToStr(AllocCount - FreeCount)),

     'MemManager', mb_ok);

AllocatedList.Free;

end.

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить