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