System.AllocMemCount
Delphi
AllocMemCount: Integer deprecated; {Unsupported}
C++
extern DELPHI_PACKAGE int AllocMemCount _DEPRECATED_ATTRIBUTE0 ;
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
variable | public | System.pas System.hpp |
System | System |
説明
警告: AllocMemCount は非推奨になっています。
Delphi アプリケーションで割り当てられたメモリ ブロックの総数を表します。
メモ: AllocMemCount は、ユーザーから要求されたメモリ ブロックの現在割り当てられている数です。 AllocMemCount は、メモリ ブロックが割り当てられるたびにインクリメントされ、解放されるたびにデクリメントされます。 AllocMemCount を使用すると、解放されていないメモリ ブロックの数を知ることができます。
警告: AllocMemCount は System ユニットで宣言されているグローバル変数であるため、直接アクセスするのは必ずしも安全ではありません。 個々のモジュールが RTL(ランタイム ライブラリ)と静的にリンクされる場合、各モジュールには AllocMemCount の異なるインスタンスが存在します。 以下の表は、AllocMemCount へのアクセス方法をアプリケーションの種類ごとにまとめたものです。 実行時パッケージを使用するアプリケーションが RTL と動的にリンクされるのに対して、実行時パッケージを使用しないアプリケーションは RTL と静的にリンクされることに注意してください。
アプリケーションの種類 | AllocMemCount へのアクセス |
---|---|
EXE |
パッケージも Delphi で作成された DLL も使用しないアプリケーションでは、このグローバル変数に安全に直接アクセスできます。変数のインスタンスが 1 つしか存在しないからです。 |
パッケージは使用するが Delphi で作成された DLL は使用しない EXE |
実行時パッケージは使用するが RTL と静的にリンクされるライブラリは使用しないアプリケーションでは、AllocMemCount に安全に直接アクセスできます。 この場合、すべてのモジュールは RTL と動的にリンクされ、この変数のインスタンスが 1 つしか存在しないからです。 標準的な DLL とは異なり、パッケージではグローバル変数へのアクセスが可能です。 |
RTL と静的にリンクされる DLL を使用する EXE |
アプリケーションが RTL と静的にリンクされ、かつ、RTL と静的にリンクされるライブラリを使用する場合は、AllocMemCount 変数に直接アクセスしないでください。EXE にも各ライブラリにも、この変数の固有のインスタンスが存在するからです。 代わりに、BorlandMM に実装されている GetAllocMemCount 関数を使用してください。この関数は、BorlandMM DLL 内のグローバル変数 AllocMemCount のインスタンスを返します。 この DLL は、アプリケーションやライブラリの uses 句の先頭に ShareMem ユニットが含まれているすべてのモジュールのメモリ割り当てを管理します。 したがって、正しい値はこの変数インスタンスに格納されています。 この場合、AllocMemCount にアクセスするには、関数を使用します。DLL 内のグローバル変数は、その DLL の外部からは参照できないためです。 |
パッケージも RTL と静的にリンクされる DLL も使用する EXE |
実行時パッケージも RTL と静的にリンクされるライブラリも使用するアプリケーションは作成しないでください。 このようなアプリケーションの場合は、メモリの割り当てや解放およびメモリへのアクセス時に注意が必要です。 モジュールごとに RTL のコピーが存在しており、その中に格納されている AllocMemCount インスタンスは、その特定のモジュールでのみ割り当ておよび解放されるメモリを参照していることに注意してください。 |