我正在使用一个动态加载的C库,它要求我在运行时为不透明对象(即我的程序只能间接访问的结构)分配和管理内存。目前我使用的代码与此类似,其中GetObjectSize
和InitalizeObject
是外来函数:
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
是否正确,因为我总是想要一个固定的大小,这使得单独的长度和容量变得多余。
那么管理内存的首选方法是什么?