メモリ、スタックなどの開放の確認するには?

解決


メルコ  2002-10-24 03:30:39  No: 1787

デバックをしている時に、メモリやスタックなどちゃんと開放されているかを確認したいのですが、よくわかりません。
GlobalMemoryStatus関数で取得した値を見ているんですが、
起動するたびにスワップファイルが減っていくのですが、これは開放されていないものがあるってことですか?


にしの  2002-10-24 05:09:05  No: 1788

それにぴったりのユニットが
http://www.yks.ne.jp/~hori/MemCheck.html
ここにあります。

GlobalMemoryStatus関数は、システム全体の状態を返すんだと思います。
だとすれば、プロジェクトで使っているメモリだけを監視することはできません。


メルコ  2002-10-24 05:40:48  No: 1789

にしのさん  ありがとうございます。

ためしに使ってみたのですが、(DLした物に入っていたサンプル)
[警告] CmdCnter.dpr(25): シンボル 'ExceptionRecord' はプラットフォームに依存すると宣言されています
[エラー] CmdCnter.dpr(39): 'MemCheck.PExceptionRecord' と 'Project1.PExceptionRecord' には互換性がありません
と表示されます。

どうしたら使えるようになるのでしょう?


メルコ  2002-10-24 05:47:13  No: 1790

> [警告] CmdCnter.dpr(25): 
> [エラー] CmdCnter.dpr(39):

名前が間違ってしまいました。ここはProject1です。
> 〜  'Project1.PExceptionRecord' には互換性がありません
逆にこっちを直してもいいんですけど・・


たかみちえ  URL  2002-10-24 07:18:18  No: 1791

Delphi6Personalなんですけど、あのサンプル、どうやっても使えませんでした。
警告は無視しても動くからいいとして。

  MemCheckモジュール自体は正常に使えるので、
サンプルは参考にせずに、MemCheckモジュールを使っちゃえばいいです。


メルコ  2002-10-24 07:32:56  No: 1792

たかみちえさん  ありがとうございます。

> サンプルは参考にせずに、MemCheckモジュールを使っちゃえばいいです。
使ったのですが、出るんですよ。

メモリリークの方だけだと使えるのですが、
どれが開放されているかがわかる方(?)を使いたいのですが
そのためには、エラーを回避しないといけないわけなのです。


ToshiqnZ  2002-10-24 07:53:46  No: 1793

こんにちは、ToshiqnZです。

実は、私も使ってまして以下の様にすると上手くいきました。

//略
{$R *.res}
{procedure GetExceptInfoFunc(Obj: TObject; var Message: string; var ExceptionRecord: PExceptionRecord);
begin
  if Obj is Exception then
  begin
    Message := Exception(Obj).Message;
    if Obj is EExternal then
      ExceptionRecord := EExternal(Obj).ExceptionRecord;
  end;
end;

procedure SetExceptMessageFunc(Obj: TObject; const NewMessage: string);
begin
  if Obj is Exception then
    Exception(Obj).Message := NewMessage;
end;}

begin
  // 例外ハンドラをインストール
  // なぜ MemCheck ユニット内でやらないかというと、MemCheck ユニットが
  // SysUtils ユニットよりも先にリンクされる必要があるため。
  //MemCheckInstallExceptionHandler(GetExceptInfoFunc, SetExceptMessageFunc);

  Application.Initialize;
//略

MemCheckInstall...をコメントアウトでOKでした。
参考になるかな。


メルコ  2002-10-24 19:07:35  No: 1794

ToshiqnZさん  ありがとうございます。

実行できました。
大変なことになってました。
4つも開放し忘れていた・・・

早めに気づいてよかったです。
ありがとうございました。


メルコ  2002-10-24 19:08:24  No: 1795

解決マーク付け忘れました。;_;


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加