FFI::addr
创建一个指向C数据的非托管指针
PHP 7.4 及以上版本
<h2>函数说明</h2>
<p>FFI::addr 函数是 PHP 中的一个 FFI (Foreign Function Interface) 扩展的方法,用于获取 C 语言结构体、数组或其他数据类型的地址。这个方法通常与 FFI 扩展一起使用,来进行低层次的内存操作或者与 C 代码进行交互。</p>
<h2>函数语法</h2>
<p>FFI::addr(mixed $value): FFI\CData
$ffi = FFI::cdef(
"struct Example { int x; int y; };",
"example.so"
);
// 创建一个 Example 结构体对象
$example = $ffi->new("struct Example");
// 获取该结构体对象的地址
$address = FFI::addr($example);
echo "结构体的地址: " . $address . PHP_EOL;
<h2>示例代码的说明</h2>
<p>在这个示例中,我们首先通过 FFI::cdef 定义了一个名为 Example 的 C 结构体。然后,我们创建了一个新的 Example 结构体对象 $example。接着,我们使用 FFI::addr 获取该结构体对象的内存地址,并将其输出。</p>