gpt4 book ai didi

perl - 可以安全地忽略 "Attempt to free unreferenced scalar"错误吗?

转载 作者:行者123 更新时间:2023-12-04 17:48:32 26 4
gpt4 key购买 nike

我还没有弄清楚是什么原因造成的,但我想知道错误(警告?)消息“尝试释放未引用的标量:全局破坏期间的 SV 0x825b790”是否有任何后果。对于未经训练的人来说,似乎因为编译器费心检测问题,所以它没有继续并重新删除未引用的内存。

这只是告诉我我的编程很草率吗?还是有我应该关注的真正问题发生?

背景:这不是我的代码,我真的没有时间去寻找问题,我应该注意到它发生在程序结束时。

最佳答案

这是 XS 模块或 Perl 本身中的错误。这意味着有一个请求释放一个已经被释放的标量。

这表明某些代码持有一个它认为有效但不是有效的指针。这可能导致代码写入不应修改的内存,从而导致数据完整性问题、段错误等。

它是在程序退出时检测到的,但发生的问题可能随时发生。从它被释放到发出错误之前,您都会遇到问题。

例如,

use Inline C => <<'__EOI__';

void buggy(SV* sv) {
SvREFCNT_dec(sv);
}

__EOI__

my $x;
buggy($x);
# $x is no longer allocated here, but I could still try to use it.

输出:
Attempt to free unreferenced scalar: SV 0xc43fc0, Perl interpreter: 0xc22690.

关于perl - 可以安全地忽略 "Attempt to free unreferenced scalar"错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24618243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com