我试图做一个相当于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)