【发布时间】:2017-01-12 20:50:47
【问题描述】:
我想向 C 函数公开一个“动态数组”。 C 函数将拥有数据,稍后将调用我的函数来释放数据。所以它看起来像下面这样:
fn get_something(len: *mut usize) -> *mut u8;
fn dealloc_something(data: *mut u8, len: usize);
在内部我有一个Box<[T]> (my_vec.to_boxed_slice())。我可以很容易地获得大小/长度,但我不知道应该返回哪个指针。如果我将从boxed_slice.as_mut_ptr() 返回的指针传递给Box::from_raw(),应用程序将崩溃。但是,如果我传递从 Box::into_raw 返回的指针,我无法找到内存布局的保证(指针指向数组的第一个元素,并且将在所有未来的 Rust 版本中继续这样做)。
这里有什么解决办法?
【问题讨论】:
标签: rust heap-memory ffi