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. |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!