栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用`as_ptr()`时如何停止内存泄漏?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用`as_ptr()`时如何停止内存泄漏?

您的Rust函数

do_something
构造一个临时对象
CString
,将一个指针放入其中,然后 删除
CString
*constc_char
从返回的那一刻起,该无效。如果您每天晚上都在使用,则可能要使用
CString#into_ptr
而不是
CString#as_ptr
,因为前者会消耗
CString
而不分配内存。在稳定的,你可以
mem::forget
CString
。然后,您可以担心谁应该释放它。

从Python释放将是棘手的或不可能的,因为Rust可能使用其他分配器。最好的方法是公开一个带

c_char
指针的Rust函数,为该指针构造一个
CString
(而不是将数据复制到新的分配中)并删除它。不幸的是,中间部分(创建
CString
)目前暂时无法实现:
CString::from_ptr
不稳定。

一种解决方法是将
_整个

CString
_函数传递(指向)Python并提供访问器函数以从中获取char指针。您只需要对进行装箱
CString
并将其转换为原始指针。然后,您可以使用另一个函数,将指针转换回框并放下。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639329.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号