|  | 
|      | 
|   | 
| Получение размера памяти выделенный под PointerDelphi , Синтаксис , Память и Указатели
Автор: Мироводин Дмитрий 
{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
Функция возврящает количество байт выделенных под 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; Приведенный код-сниппет - это функция Delphi под именем  Вот шаг за шагом, как функция работает: 
 Приведенные примеры демонстрируют, как использовать эту функцию: 
 Вот альтернативное решение с использованием встроенной функции Delphi  Эта реализация проще и более эффективна, чем оригинальный код. Однако она работает только с указателями и не обеспечивает такой же уровень настройки, как оригинальная функция. В целом, рекомендуется использовать встроенные функции Delphi, когда это возможно, потому что они часто оптимизированы для производительности и надежности. Функция GetPointerSize получает количество байт, выделенных под указатель, и возвращает его значение в виде целого числа, округленного до DWORD (4 байта) в большую сторону. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш  :: Главная :: Память и Указатели :: 
 | ||||
|  ©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||