System.TMemoryManagerEx
Delphi
TMemoryManagerEx = record
{The basic (required) memory manager functionality}
GetMem: function(Size: NativeInt): Pointer;
FreeMem: function(P: Pointer): Integer;
ReallocMem: function(P: Pointer; Size: NativeInt): Pointer;
{Extended (optional) functionality.}
AllocMem: function(Size: NativeInt): Pointer;
RegisterExpectedMemoryLeak: function(P: Pointer): Boolean;
UnregisterExpectedMemoryLeak: function(P: Pointer): Boolean;
end;
C++
struct DECLSPEC_DRECORD TMemoryManagerEx
{
public:
void * __fastcall (*GetMem)(NativeInt Size);
int __fastcall (*FreeMem)(void * P);
void * __fastcall (*ReallocMem)(void * P, NativeInt Size);
void * __fastcall (*AllocMem)(NativeInt Size);
bool __fastcall (*RegisterExpectedMemoryLeak)(void * P);
bool __fastcall (*UnregisterExpectedMemoryLeak)(void * P);
};
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
record struct |
public | System.pas System.hpp |
System | System |
説明
TMemoryManagerEx は、拡張されたメモリ ブロック エントリ ポイントを表します。
TMemoryManagerEx 型は、GetMemoryManager プロシージャと SetMemoryManager プロシージャによって使用されます。この型は、メモリの割り当てや解放を行うルーチンを表します。
GetMem フィールド(Delphi)または GetMem メソッド(C++)には、与えられたバイト数を割り当てて、新規に割り当てられたメモリ ブロックへのポインタを返す関数を定義する必要があります。この関数は、GetMemory ルーチンによって呼び出されます。
GetMem 関数に渡される Size パラメータは、0 になることはありません。GetMem 関数は、与えられたサイズのメモリ ブロックを割り当てることができない場合は、nil(Delphi)または NULL(C++)を返さなければなりません。
FreeMem フィールド(Delphi)または FreeMem メソッド(C++)には、与えられたメモリ ブロックを解放する関数を定義する必要があります。 FreeMem 関数に渡されるポインタ パラメータは、nil(Delphi)または NULL(C++)になることはありません。FreeMem 関数は、与えられたメモリを正常に解放できた場合は、0 を返さなければなりません。それ以外の場合は、0 以外の値を返さなければなりません。これは、FreeMemory ルーチンによって呼び出されます。
ReallocMem フィールド(Delphi)または ReallocMem メソッド(C++)には、与えられたメモリ ブロックを、新しいサイズに再割り当てする関数を定義する必要があります。 ReallocMem 関数に渡されるポインタ パラメータは、nil(Delphi)または NULL(C++)になることはありません。また、Size パラメータは 0 になることはありません。ReallocMem 関数は、与えられたメモリ ブロックを新しいサイズに再割り当てしなければなりません。与えられたメモリ ブロックのサイズを変更できない場合は、メモリ ブロックを移動する場合もあります。メモリ ブロックの既存の内容はすべて維持する必要があります。ただし、新たに割り当てられた領域は初期化しなくてもかまいません。ReallocMem 関数は、再割り当てされたメモリ ブロックへのポインタを返さなければなりません。再割り当てができなかった場合は、nil (Delphi)または NULL(C++)を返さなければなりません。 これは、ReallocMem ルーチンによって呼び出されます。
AllocMem フィールド(Delphi)または AllocMem メソッド(C++)には、与えられたバイト数を割り当てて、新規に割り当てられたメモリ ブロックへのポインタを返す関数を定義する必要があります。この関数は、AllocMem ルーチンによって呼び出されます。
RegisterExpectedMemoryLeak フィールド(Delphi)または RegisterExpectedMemoryLeak メソッド(C++)には、アプリケーションによって割り当てられた後、解放されないと予想されるメモリ位置を登録する関数を定義する必要があります。これは、 RegisterExpectedMemoryLeak ルーチンによって呼び出されます。
UnregisterExpectedMemoryLeak フィールド(Delphi)または UnregisterExpectedMemoryLeak メソッド(C++)には、メモリ マネージャの、予想されるメモリ リークのリストからメモリ位置を削除する関数を定義する必要があります。これは、 UnregisterExpectedMemoryLeak ルーチンによって呼び出されます。