小编Chr*_*her的帖子

munmap_chunk:使用 Rust 生成的动态库中的函数的 C 程序中的无效指针

我有一个函数在Rust. 它接收 a*const c_char并将其转换为字符串。

#[no_mangle]
pub extern "C" fn listen(addr: *const c_char) {
    unsafe {
        let addr_str = {
            let cstr = CStr::from_ptr(addr);
            let bytes = cstr.to_bytes();
            String::from_raw_parts(bytes.as_ptr() as *mut u8, bytes.len(), bytes.len())
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

在 C 程序中,我从命令行获取地址。

#include "xxx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

// input: address
int main(int argc, char *argv[]) {
  if (argc != 2) {
    printf("Usage %s <listen_addr>\n", argv[0]);
    return -1;
  }

  const char *addr = argv[1];

  listen(addr); …
Run Code Online (Sandbox Code Playgroud)

c ffi rust

0
推荐指数
1
解决办法
126
查看次数

标签 统计

c ×1

ffi ×1

rust ×1