Code:

{ **** UBPFD *********** by delphibase.endimus .com ****

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

 

Функция возврящает количество байт выделенных под Pointer.

Размер округляется в большую сторону до DWORD (4 байт).

 

Зависимости: Windows

Автор:       Мироводин Дмитрий, mirovodin mail.ru

Copyright:   Мироводин Дмитрий

Дата:        16 октября 2013 г.

***************************************************** }

 

function GetPointerSize(const P: Pointer): Integer;

begin

if P = nilthen

   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;

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить