Получение размера памяти выделенный под Pointer

Получение размера памяти выделенный под Pointer

{ **** 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;

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...