docs(examples): 添加 FFI 崩溃示例

pull/14/head
韩天峰 2 months ago
parent f1f2e7e5cb
commit b40a448804
  1. 19
      examples/ffi-crash.php

@ -0,0 +1,19 @@
<?php
// 1. 创建一个包含 10 个 int 的 C 风格数组
$size = 10;
$cArray = FFI::new("int[$size]");
// 2. 获取一个指向第 0 个元素的指针
$ptr = FFI::addr($cArray[0]);
// 3. 关键:将指针偏移 100000 个 int 的位置,然后写入
// 这完全超出了数组的实际边界(只有 10 个元素)
$offset = 100000;
FFI::memcpy(
FFI::cast("int*", $ptr + $offset * FFI::sizeof(FFI::type("int"))),
FFI::addr(FFI::new("int", false, 12345)), // 要写入的值
FFI::sizeof(FFI::type("int"))
);
echo "如果看到这行,说明没崩(通常看不到)\n";
?>
Loading…
Cancel
Save