哪种更安全的方式将`uint8_t *`C缓冲区存储在Rust中?

Guerlando OC

我正在做

#[no_mangle]
pub extern "C" fn receiveBufferAndPrint(buffer: *const u8, size: usize)
{
    for i in 0..size {
        println!("{}", unsafe { *buffer.offset(i as isize) });
    }
}

uint8_t*从C接收缓冲区

将缓冲区转换为Rust对象的最佳方法是什么?我需要在Rust上安全地处理缓冲区,但是我不想将缓冲区元素逐个复制到新的Rust对象中,我想将其包装到Rust对象中,当它超出范围时会删除它。

内核

如果C为您提供了缓冲区,请使用std::slice::from_raw_parts,然后可以将该切片复制到,Vec<T>或者Box<[T]>如果要保留数据。

如果C传递了缓冲区的所有权(即,它是堆分配的,而C不会释放它),则可以使用c_vec crate来确保正确释放了它(使用libc::free()代替Rust自己的分配器)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么sscanf将\ n存储在缓冲区中

来自分类Dev

将缓冲区(char *)传递给C中的函数

来自分类Dev

将方法放入C ++中的缓冲区

来自分类Dev

C ++:将读取的二进制文件存储到缓冲区

来自分类Dev

将uint8_t存储在NSMutableArray中

来自分类Dev

线程安全的循环缓冲区,用于存储指针

来自分类Dev

将缓冲区上传到Google云存储

来自分类Dev

kmalloc中的缓冲区还是DMA安全缓冲区吗?

来自分类Dev

如何将o / p存储到缓冲区,然后从缓冲区存储到文件

来自分类Dev

在 C++ 中清除空输入缓冲区的安全操作

来自分类Dev

在C中使用memcpy将多个结构复制到缓冲区中

来自分类Dev

将文件写入磁盘并使用缓冲区时,C中的分段错误11

来自分类Dev

将char *转换为uint8_t的数组(c)

来自分类Dev

Vim检测当前缓冲区是哪种缓冲区

来自分类Dev

emacs缓冲区中的目录快捷方式

来自分类Dev

将C格式传递到nodejs缓冲区

来自分类Dev

将Emacs缓冲区传递给C

来自分类Dev

将C格式传递到nodejs缓冲区

来自分类Dev

C++将整个进程内存读入缓冲区

来自分类Dev

MPI_Bcast,将数组缓冲区广播到接收缓冲区中的特定位置

来自分类Dev

使用libpng 1.2将RGB图像缓冲区写入内存中的PNG缓冲区导致分段错误

来自分类Dev

c-将uint8_t *转换为uint32_t *行为

来自分类Dev

C ++中的有效循环缓冲区,将传递给C样式数组函数参数

来自分类Dev

在Linux / C编程中,使用功能write也可以将指示器移动到缓冲区上吗?

来自分类Dev

Python中的uint8_t转换?最好或最优雅的方式是什么?

来自分类Dev

缓冲区使用哪种硬件

来自分类Dev

线程安全的缓冲区包装流

来自分类Dev

线程安全的缓冲区数组

来自分类Dev

用C中的特定格式将char转换为uint8_t数组

Related 相关文章

  1. 1

    为什么sscanf将\ n存储在缓冲区中

  2. 2

    将缓冲区(char *)传递给C中的函数

  3. 3

    将方法放入C ++中的缓冲区

  4. 4

    C ++:将读取的二进制文件存储到缓冲区

  5. 5

    将uint8_t存储在NSMutableArray中

  6. 6

    线程安全的循环缓冲区,用于存储指针

  7. 7

    将缓冲区上传到Google云存储

  8. 8

    kmalloc中的缓冲区还是DMA安全缓冲区吗?

  9. 9

    如何将o / p存储到缓冲区,然后从缓冲区存储到文件

  10. 10

    在 C++ 中清除空输入缓冲区的安全操作

  11. 11

    在C中使用memcpy将多个结构复制到缓冲区中

  12. 12

    将文件写入磁盘并使用缓冲区时,C中的分段错误11

  13. 13

    将char *转换为uint8_t的数组(c)

  14. 14

    Vim检测当前缓冲区是哪种缓冲区

  15. 15

    emacs缓冲区中的目录快捷方式

  16. 16

    将C格式传递到nodejs缓冲区

  17. 17

    将Emacs缓冲区传递给C

  18. 18

    将C格式传递到nodejs缓冲区

  19. 19

    C++将整个进程内存读入缓冲区

  20. 20

    MPI_Bcast,将数组缓冲区广播到接收缓冲区中的特定位置

  21. 21

    使用libpng 1.2将RGB图像缓冲区写入内存中的PNG缓冲区导致分段错误

  22. 22

    c-将uint8_t *转换为uint32_t *行为

  23. 23

    C ++中的有效循环缓冲区,将传递给C样式数组函数参数

  24. 24

    在Linux / C编程中,使用功能write也可以将指示器移动到缓冲区上吗?

  25. 25

    Python中的uint8_t转换?最好或最优雅的方式是什么?

  26. 26

    缓冲区使用哪种硬件

  27. 27

    线程安全的缓冲区包装流

  28. 28

    线程安全的缓冲区数组

  29. 29

    用C中的特定格式将char转换为uint8_t数组

热门标签

归档