简体   繁体   English

Memory 在 Rust FFI 中处理

[英]Memory handling in Rust FFI

In my Rust code I have to use some C function in the Rust side.在我的 Rust 代码中,我必须在 Rust 端使用一些 C function。 In that function I have to pass some structures as example.在那个 function 中,我必须传递一些结构作为示例。

#[repr(C)]
pub structA {
    pub buffer:[i8; 8000],
    pub writing: i32,
    pub written_num: i32,
    pub write_index: i32,
    pub id: i32,
    pub sortArray: StructB,
}

FFI calling part FFI调用部分

let mut struc_a = Box::new(structA::new());
unsafe {
    ProcessStrucA(&mut *structA);
}

structure in C side C 侧的结构

typedef struct {
    char buffer[8000];
    size_t writing;
    size_t written_num;
    size_t write_index;
    int id;
    StructB structB;
} structA;

When I'm passing above structure to C side it will not get the values which we send from the Rust side.当我将上述结构传递给 C 端时,它不会获得我们从 Rust 端发送的值。 According to my understanding this could be happening due to invalid memory handling.根据我的理解,这可能是由于无效的 memory 处理而发生的。 How do I resolve this issue?我该如何解决这个问题?

I have changed the buffer type::std::os::raw::c_char then it works as expected.我已经更改了缓冲区 type::std::os::raw::c_char 然后它按预期工作。 Thanks谢谢

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM