亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

一個DELPHI的MemoryManager

2019-11-18 18:27:29
字體:
來源:轉載
供稿:網友
 

unit MemoryManager;

interface

PRocedure SnapCurrMemStatToFile(Filename: string);

implementation

uses
  Windows, SysUtils, TypInfo;

const
  MaxCount = High(Word);

var
  OldMemMgr: TMemoryManager;
  ObjList: array[0..MaxCount] of Pointer;
  FreeInList: Integer = 0;
  GetMemCount: Integer = 0;
  FreeMemCount: Integer = 0;
  ReallocMemCount: Integer = 0;

procedure AddToList(P: Pointer);
begin
  if FreeInList > High(ObjList) then
  begin
    MessageBox(0, '內存管理監視器指針列表溢出,請增大列表項數!', '內存管理監視器', mb_ok);
    Exit;
  end;
  ObjList[FreeInList] := P;
  Inc(FreeInList);
end;

procedure RemoveFromList(P: Pointer);
var
  I: Integer;
begin
  for I := 0 to FreeInList - 1 do
    if ObjList[I] = P then
    begin
      Dec(FreeInList);
      Move(ObjList[I + 1], ObjList[I], (FreeInList - I) * SizeOf(Pointer));
      Exit;
    end;
end;

procedure SnapCurrMemStatToFile(Filename: string);
const
  FIELD_WIDTH = 20;
var
  OutFile: TextFile;
  I, CurrFree, BlockSize: Integer;
  HeapStatus: THeapStatus;
  Item: TObject;
  ptd: PTypeData;
  ppi: PPropInfo;

  procedure Output(Text: string; Value: integer);
  begin
    Writeln(OutFile, Text: FIELD_WIDTH, Value div 1024, ' KB(', Value, ' Byte)');
  end;

begin
  AssignFile(OutFile, Filename);
  try
    if FileExists(Filename) then
    begin
      Append(OutFile);
      Writeln(OutFile);
    end
    else
      Rewrite(OutFile);
    CurrFree := FreeInList;
    HeapStatus := GetHeapStatus; { 局部堆狀態 }
    with HeapStatus do
    begin
      Writeln(OutFile, '===== ', ExtractFileName(ParamStr(0)), ',', DateTimeToStr(Now), ' =====');
      Writeln(OutFile);
      Output('可用地址空間 : ', TotalAddrSpace);
      Output('未提交部分 : ', TotalUncommitted);
      Output('已提交部分 : ', TotalCommitted);
      Output('空閑部分 : ', TotalFree);
      Output('已分配部分 : ', TotalAllocated);
      Output('全部小空閑內存塊 : ', FreeSmall);
      Output('全部大空閑內存塊 : ', FreeBig);
      Output('其它未用內存塊 : ', Unused);
      Output('內存管理器消耗 : ', Overhead);
      Writeln(OutFile, '地址空間載入 : ': FIELD_WIDTH, TotalAllocated div (TotalAddrSpace div 100), '%');
    end;
    Writeln(OutFile);
    Writeln(OutFile, Format('當前出現 %d 處內存漏洞 :', [GetMemCount - FreeMemCount]));
    for I := 0 to CurrFree - 1 do
    begin
      Write(OutFile, I: 4, ') ', IntToHex(Cardinal(ObjList[I]), 16), ' - ');
      BlockSize := PDWORD(DWORD(ObjList[I]) - 4)^;
      Write(OutFile, BlockSize: 4, '($' + IntToHex(BlockSize, 4) + ')字節', ' - ');
      try
        Item := TObject(ObjList[I]);
        if PTypeInfo(Item.ClassInfo).Kind <> tkClass then { type info technique }
          write(OutFile, '不是對象')
        else
        begin
          ptd := GetTypeData(PTypeInfo(Item.ClassInfo));
          ppi := GetPropInfo(PTypeInfo(Item.ClassInfo), 'Name'); { 如果是TComponent }
          if ppi <> nil then
          begin
            write(OutFile, GetStrProp(Item, ppi));
            write(OutFile, ' : ');
          end
          else
            write(OutFile, '(未命名): ');
          Write(OutFile, Item.ClassName, ' (', ptd.ClassType.InstanceSize,
            ' 字節) - In ', ptd.UnitName, '.pas');
        end
      except
        on Exception do
          write(OutFile, '不是對象');
      end;
      writeln(OutFile);
    end;
  finally
    CloseFile(OutFile);
  end;
end;

function NewGetMem(Size: Integer): Pointer;
begin
  Inc(GetMemCount);
  Result := OldMemMgr.GetMem(Size);
  AddToList(Result);
end;

function NewFreeMem(P: Pointer): Integer;
begin
  Inc(FreeMemCount);
  Result := OldMemMgr.FreeMem(P);
  RemoveFromList(P);
end;

function NewReallocMem(P: Pointer; Size: Integer): Pointer;
begin
  Inc(ReallocMemCount);
  Result := OldMemMgr.ReallocMem(P, Size);
  RemoveFromList(P);
  AddToList(Result);
end;

const
  NewMemMgr: TMemoryManager = (
    GetMem: NewGetMem;
    FreeMem: NewFreeMem;
    ReallocMem: NewReallocMem);

initialization
  GetMemoryManager(OldMemMgr);
  SetMemoryManager(NewMemMgr);

finalization
  SetMemoryManager(OldMemMgr);
  if (GetMemCount - FreeMemCount) <> 0 then
    SnapCurrMemStatToFile(ExtractFileDir(ParamStr(0)) + '/Memory.Log');
end.


上一篇:delphi7從入門到精通之(一)

下一篇:delphi7從入門到精通之四

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人高清视频| 51精品国产黑色丝袜高跟鞋| 精品国产老师黑色丝袜高跟鞋| 亚洲欧美国产精品va在线观看| 国精产品一区一区三区有限在线| 中文字幕日韩高清| 亚洲精品欧美一区二区三区| 黑人巨大精品欧美一区二区免费| 亚洲天天在线日亚洲洲精| 日韩中文字幕在线看| 亚洲综合中文字幕在线| 亚洲资源在线看| 亚洲成人三级在线| 中文字幕国产日韩| 国产精品电影在线观看| 欧美在线视频观看免费网站| 在线精品视频视频中文字幕| 欧美极品少妇xxxxⅹ免费视频| 国产亚洲精品一区二区| 精品无人国产偷自产在线| 国产午夜精品全部视频在线播放| 亚洲视频在线观看网站| 91久久精品美女| 在线观看欧美日韩| 91国产在线精品| 国产精品久久久久久网站| 欧美激情中文字幕在线| 神马国产精品影院av| 亚洲午夜精品视频| 97色在线观看免费视频| 国产精品福利无圣光在线一区| 亚洲性视频网站| 国产精品无av码在线观看| 欧美在线视频播放| 欧美性猛交xxxxx水多| 国产偷亚洲偷欧美偷精品| 57pao国产成人免费| 亚洲欧美日韩一区二区三区在线| 亚洲欧美日韩网| 精品人伦一区二区三区蜜桃免费| 国产日韩欧美视频| 国内揄拍国内精品| 欧美日韩亚洲成人| 亚洲午夜精品视频| 日韩一区二区三区国产| 国产成人精品日本亚洲专区61| 亚洲欧美三级伦理| 亚洲综合在线中文字幕| 国自在线精品视频| 中文字幕亚洲无线码在线一区| 日韩国产高清污视频在线观看| 欧美理论片在线观看| 成人激情黄色网| 欧美黑人xxx| 亚洲精品理论电影| 国产999视频| 国产精品福利在线观看| 亚洲欧美日韩一区二区在线| 久久资源免费视频| 欧美午夜影院在线视频| 欧美在线xxx| 欧美在线视频在线播放完整版免费观看| 成人性生交xxxxx网站| 欧美一区深夜视频| 日韩男女性生活视频| 亚洲无av在线中文字幕| 欧美中文在线免费| 91亚洲国产成人久久精品网站| 2024亚洲男人天堂| 久久久国产精品x99av| 欧美激情一区二区三区久久久| 亚洲精品理论电影| 亚洲人精选亚洲人成在线| 亚洲最大的免费| 亚洲xxx自由成熟| 国产一区二区三区中文| 在线视频精品一| 欧美精品日韩www.p站| 日韩中文字幕不卡视频| 日韩经典第一页| 欧美激情欧美激情在线五月| 国产成人在线播放| 成人看片人aa| 色狠狠久久aa北条麻妃| 亚洲www在线观看| 超碰精品一区二区三区乱码| 热re99久久精品国产66热| 国产精品欧美风情| 亚洲伦理中文字幕| 成人国产精品av| 日产精品久久久一区二区福利| 亚洲va欧美va国产综合剧情| 欧美日韩国产中文精品字幕自在自线| 亚洲区bt下载| 亚洲欧美综合另类中字| 在线不卡国产精品| 亚洲美女黄色片| 久久777国产线看观看精品| 国语自产精品视频在线看一大j8| 久久精视频免费在线久久完整在线看| 一区二区日韩精品| 成人欧美一区二区三区在线湿哒哒| 久久av红桃一区二区小说| 最近2019年手机中文字幕| 国产精品亚洲视频在线观看| 日本精品一区二区三区在线播放视频| 国产丝袜一区二区三区免费视频| 亚洲精品国精品久久99热| 久久九九有精品国产23| 国产精品美女久久久久av超清| 中文字幕少妇一区二区三区| 国产区精品在线观看| 欧美激情中文字幕在线| 亚洲精品一区在线观看香蕉| 在线观看精品自拍私拍| 亚洲精品日韩激情在线电影| 日韩中文字幕视频在线观看| 欧美一区二区视频97| 日韩精品久久久久久久玫瑰园| 久久精品青青大伊人av| 久久九九国产精品怡红院| 欧美床上激情在线观看| 亚洲2020天天堂在线观看| 国内精品久久久久久久久| 亚洲第一免费播放区| 激情av一区二区| 国内精品久久久久影院 日本资源| 久久夜精品香蕉| 国产欧美精品日韩精品| 亚洲bt欧美bt日本bt| 久久久久久久久久久人体| 亚洲欧洲免费视频| 国产精品美女主播在线观看纯欲| 日韩电影免费观看在线观看| 精品亚洲一区二区三区在线观看| 日韩精品免费综合视频在线播放| 亚洲成人亚洲激情| 国产精品免费小视频| 日韩在线www| 97成人精品视频在线观看| 欧美日韩一二三四五区| 久久久精品在线观看| 91九色视频在线| 国产精品激情自拍| 欧美午夜激情视频| 久久久免费av| 欧美日韩亚洲精品内裤| 欧美精品免费播放| 久久91亚洲精品中文字幕| 欧美日韩国产va另类| 91美女片黄在线观看游戏| 久久在线免费观看视频| 色综合久久久久久中文网| 亚洲免费精彩视频| 久久久av亚洲男天堂| 日韩中文在线观看| 精品二区三区线观看| 精品女同一区二区三区在线播放| 亚洲福利影片在线| 国产精品美女呻吟| 欧美午夜性色大片在线观看| 国产亚洲精品美女| 国产热re99久久6国产精品| 亚洲一区二区三|