如何动态分配不透明的FFI类型?

时间:2017-05-31 16:27:01

标签: rust ffi

我正在使用一个动态加载的C库,它要求我在运行时为不透明对象(即我的程序只能间接访问的结构)分配和管理内存。目前我使用的代码与此类似,其中GetObjectSizeInitalizeObject是外来函数:

unsafe {
    // Ask the library for the size.
    let mut size: usize = 0;
    let mut success = GetObjectSize(&mut size);
    if success && size > 0 {
        // allocate and zero fill the memory, using a Vec.
        let mut ffi_obj = vec![0u8; size];
        // pass ffi_obj to the C library.
        success = InitalizeObject(ffi_obj.as_ptr(), &size);
        // ...etc, etc.

据推测,我应该将Vec包装在一个结构中,以便它具有不太通用的类型?我不确定Vec是否正确,因为我总是想要一个固定的大小,这使得单独的长度和容量变得多余。

那么管理内存的首选方法是什么?

0 个答案:

没有答案