小编cre*_*ive的帖子

在祝福XS代码中的空引用时泄漏

我试图做一个相当于XS的XS:

package RefTestPP;
use strict;
use warnings;

sub new {
    my ($class, $self) = (@_, {});
    return bless $self, $class;
}

1;
Run Code Online (Sandbox Code Playgroud)

这种构造函数应该在被调用时"自动"它的基础RefTestPP->new(),或者使用给定的引用作为基础,如RefTestPP->new({ stuff => 123 });.

但是,我遇到了无法解释的泄漏.这是我的RefTest.xs档案:

#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#include "ppport.h"

MODULE = RefTest PACKAGE = RefTest

PROTOTYPES: ENABLE

void
new(sclass="RefTest", base=sv_2mortal(newRV_noinc((SV *) newHV())))
    const char *sclass
    SV *base
    PREINIT:
        HV *stash;
    PPCODE:
        stash = gv_stashpv(sclass, 0);
        ST(0) = sv_bless(base, stash);

        XSRETURN(1);

void
new_leaky(sclass="RefTest", base=newRV_noinc(sv_2mortal((SV *) newHV())))
    const char …
Run Code Online (Sandbox Code Playgroud)

perl garbage-collection memory-leaks reference xs

3
推荐指数
1
解决办法
245
查看次数

标签 统计

garbage-collection ×1

memory-leaks ×1

perl ×1

reference ×1

xs ×1