経営幹部レベルで参照を処理しようとすると、との違いを(実際には)理解できないようnewRV_inc
ですnewRV_noinc
。Inline::C
そのために、私はこの小さな例をモックアップしました。
#!/usr/bin/env perl
use strict;
use warnings;
use Devel::Peek 'SvREFCNT';
my $arrayref_inc = make_arrayref_inc();
print "inc: ", SvREFCNT($arrayref_inc), "\n";
my $arrayref_noinc = make_arrayref_noinc();
print "noinc: ", SvREFCNT($arrayref_noinc), "\n";
use Inline C => <<'END_C';
SV* make_arrayref_inc () {
AV * array = newAV();
SV * arrayref = newRV_inc((SV *)array);
return arrayref;
}
SV* make_arrayref_noinc () {
AV * array = newAV();
SV * arrayref = newRV_noinc((SV *)array);
return arrayref;
}
END_C
与える:
inc: 1
noinc: 1
このコードがこのように動作する理由を誰かが理解するのを手伝ってもらえますか?