while(1) 与 for(;;) 中奇怪的内存使用情况

Cos*_*min 3 php performance execution-time

我有以下 2 个代码。

1:

$i = 0;
while(1)
{
    $i++;

    echo "big text for memory usage ";
    if ( $i == 50000 )
    break;
}

echo "<br />" . memory_get_usage();
Run Code Online (Sandbox Code Playgroud)

每次都会回响:1626464

2:

$i = 0;
for(;;)
{
    $i++;

    echo "big text for memory usage ";
    if ( $i == 50000 )
    break;
}

echo "<br />" . memory_get_usage();
Run Code Online (Sandbox Code Playgroud)

每次都会回响:1626656

有人可以解释两种不同内存使用之间的差异吗?即使它们那么小...

Que*_*det 5

这是一个实施细节。在 for 循环中,PHP 可能会使用一些空间来存储三个指针,一个用于 for 初始化,一个用于增量,一个用于停止条件。如果您使用的是 64 位系统,那么这就是64 * 3 = 192您看到的额外位的原因。当然,不看实际代码很难判断我是否正确。