我写了以下代码。
为什么?我没有使用任何指针。
这是StackOverflow吗?
<?php
function f(){
return f();
}
f();
并获取输出结果
$ php test.php
Segmentation fault
为什么?我没有使用任何指针。
这是StackOverflow吗?
<?php
function f(){
return f();
}
f();
并获取输出结果
$ php test.php
Segmentation fault
<?php
function f(){
sleep(1);
return f();
}
f();
<?php
function f($i){
if($i == 10)
return;
echo $i;
return f(++$i);
}
f(0);
这将打印0到9。
分段错误
错误来自操作系统,报告PHP应用程序在添加到堆栈时遇到问题。由于在系统级别上组成PHP的二进制文件失败,因此不会传递到您的脚本。
这不是无限递归吗?你想要实现什么?
这是来自于 XDebug 扩展。
运行 GDB,你会看到:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff41f7e48 in xdebug_add_stack_frame (zdata=Cannot access memory at address 0x7fffff5fefa8
) at /build/buildd/xdebug-2.1.0/build-php5/xdebug_stack.c:772
772 /build/buildd/xdebug-2.1.0/build-php5/xdebug_stack.c: No such file or directory.
in /build/buildd/xdebug-2.1.0/build-php5/xdebug_stack.c
memory_limit
。如果您的memory_limit
太高,可能会耗尽RAM并开始交换,导致机器冻结/崩溃。
f
调用f
调用f
调用f
调用f
调用f
调用f
......我也会尖叫分段错误。 - Dan Luggxdebug
有一个限制吗?它是100吗? - Dan Lugg