Получение размера памяти выделенный под Pointer
Автор: Мироводин Дмитрий
WEB-сайт: http://delphibase.endimus.com
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение размера памяти выделенный под Pointer
Функция возврящает количество байт выделенных под Pointer.
Размер округляется в большую сторону до DWORD (4 байт).
Зависимости: Windows
Автор: Мироводин Дмитрий, mirovodin@mail.ru
Copyright: Мироводин Дмитрий
Дата: 16 октября 2003 г.
***************************************************** }
function GetPointerSize(const P: Pointer): Integer;
begin
if P = nil then
Result := -1
else
Result := Integer(Pointer((Integer(p) - 4))^) and $7FFFFFFC - 4;
end;
Пример использования:
var
P: pointer;
PSize: integer;
begin
GetMem(P, 1024); // Размер кратен 4
PSize := GetPointerSize(P);
ShowMessage(inttostr(PSize)); // Результат 1024 байта
FreeMem(P);
end;
...
var
P: pointer;
PSize: integer;
begin
// Размер НЕ КРАТЕН 4
GetMem(P, 6);
PSize := GetPointerSize(P);
// Результат 8 байта т.к. идет округление
ShowMessage(inttostr(PSize));
FreeMem(P);
end;
|