我要揭露一个“动态数组”的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
,我无法找到的内存布局保证(指针指向数组的第一个元素,并会继续为所有未来版本锈这样做)。
这里有什么解决办法?