PHP Conference Japan 2024

FFI::sizeof

(PHP 7 >= 7.4.0, PHP 8)

FFI::sizeof取得 C 資料或類型的尺寸

說明

public static FFI::sizeof(FFI\CData|FFI\CType &$ptr): int

回傳給定的 FFI\CDataFFI\CType 物件的尺寸。

參數

ptr

C 資料或類型的控制代碼。

回傳值

ptr 所指向記憶體區域的尺寸。

新增筆記

使用者貢獻的筆記 1 則筆記

wowabbs+php at gmail dot com
3 年前
<?php // 使用 sizeof 的範例
函式 _Win_Ffi_GlobalMemoryStatus()
{
static
$Kernel32, $a, $r;
$Kernel32??=FFI::cdef(<<<'IDL'
typedef struct _MemoryStatus {
uint32_t Length ;
uint32_t MemoryLoad ;
uint64_t TotalPhys ;
uint64_t AvailPhys ;
uint64_t TotalPageFile ;
uint64_t AvailPageFile ;
uint64_t TotalVirtual ;
uint64_t AvailVirtual ;
} MemoryStatus;
void GlobalMemoryStatus(MemoryStatus* buf);
IDL, 'Kernel32.dll');
$a??=$Kernel32->new('MemoryStatus');
$a->Length =$Kernel32::sizeof($Kernel32->type('MemoryStatus'));
$r??=FFI::addr($a);
$Kernel32->GlobalMemoryStatus($r);
return [
'Total' =>$a->TotalPhys,
'Free' =>$a->TotalPhys-$a->AvailPhys,
'Load' =>$a->MemoryLoad*0.01,
];
}
?>
To Top