gpt4 book ai didi

php - 为什么这个 PHP 函数会给出段错误(SIGSEGV)?

转载 作者:行者123 更新时间:2023-12-02 07:47:02 27 4
gpt4 key购买 nike

我写了以下代码。

<?php
function f(){
return f();
}
f();

得到输出

$ php test.php
Segmentation fault

为什么?我没有使用任何指针。

这是 StackOverflow 吗?

最佳答案

这是一个无限递归的例子,但这并不是具体的原因。这是一个 stack overflow .当您进行递归时,无论是否无限,都可以根据堆栈的大小(以字节为单位)进行递归(添加到堆栈)的最大深度。

从技术上讲,这是无限的,但在很长一段时间内您不会收到任何错误:

<?php
function f(){
sleep(1);
return f();
}
f();

您需要在递归中称为 base case,以便在它消耗整个堆栈之前停止它。

<?php
function f($i){
if($i == 10)
return;

echo $i;

return f(++$i);
}
f(0);

这将打印 0 到 9。

segmentation fault 错误来自操作系统,报告 PHP 应用程序遇到了添加到堆栈的问题。这不会出现在您的脚本中,因为在系统级别,构成 PHP 的二进制文件已经失败。

关于php - 为什么这个 PHP 函数会给出段错误(SIGSEGV)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6327607/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com