【发布时间】:2021-04-18 09:30:20
【问题描述】:
我正在编写一个 C 库的接口。一个 C 函数分配一些内存,读取一个值,然后返回一个指向该缓冲区的 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 运行此代码,它没有报告任何引用已释放内存缓冲区的尝试。我还是很好奇。
【问题讨论】:
标签: raku nativecall