聘我网

新概念招聘3.0

perl如何解决循环引用?

vote up0vote downstar

以下都会导致循环引用,从而内存泄露,该如何解决?

{         
my @data1 = qw(one won);

my @data2 = qw(two too to);

push @data2, \@data1;

push @data1, \@data2;
}

{
    my $sub = sub {
        print $sub;
    };
    print Dump $sub;
}
 

1 个答复

vote up0vote downcheck

使用Scalar::Util::weaken:

{    
my @data1 = qw(one won);

my @data2 = qw(two too to);

push @data2, \@data1;

push @data1, \@data2;

weaken($data1[2]);

weaken($data2[3]);

}
{
    my $sub = sub {
        print $sub;
    };
    weaken($sub);
    print Dump $sub;
}

另外可用Devel::Cycle::find_cycle查找循环引用

链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.