可以`转到LABEL`导致内存泄漏吗?

yon*_*100 11 memory perl goto

使用goto标签会导致内存泄漏吗?我在文档中goto找到的所有相关内容都是:

goto LABEL表格发现标有LABEL的语句,并继续执行那里.

使用安全goto LABEL吗?

Jos*_*hua 2

经过1分钟的测试,答案似乎是:是的 (请参阅下面的更新)

top在运行时观察,%MEM不断增加

{
    THIS:
    my $x = 1;
    goto THIS;
}
Run Code Online (Sandbox Code Playgroud)

这不显示相同的递增%MEM计数器

while (1) {
    my $x = 1;
}
Run Code Online (Sandbox Code Playgroud)

更新

我误解了这个问题。我对这个问题的看法是,是否会使用 a 为该词法范围中已经存在的词法变量分配内存goto,而我的测试似乎表明是的。严格来说,这并不是内存泄漏。如果 perl 退出这个词法范围,分配的空间将被释放。

  • 不是泄漏,因为 perl 不会丢失内存跟踪,并且会在作用域退出时释放所有内存。 (9认同)