我正在编写一个 C 库的接口。AC 函数分配一些内存,读取一个值,并返回一个void *
指向该缓冲区的指针,随后将被释放。
我希望确定当我将调用的输出分配给nativecast(Str, $data)
Raku Str 变量时,数据被分配给变量(复制到),而不仅仅是绑定到它,所以我可以释放 C 函数分配的空间任务后不久。
这大概是代码的样子:
my Pointer $data = c_read($source);
my Str $value = nativecast(Str, $data);
c_free($data);
# $value is now ready to be used
我通过 valgrind 运行此代码,它没有报告任何引用已释放内存缓冲区的尝试。我还是很好奇。