gpt4 book ai didi

memory-management - Rust 手动内存管理

转载 作者:行者123 更新时间:2023-11-29 07:55:44 27 4
gpt4 key购买 nike

当我开始学习 C 时,我实现了常见的数据结构,例如列表、映射和树。我使用 malloccallocreallocfree 在请求时手动管理内存。我用 C++ 做了同样的事情,使用 newdelete

现在是 Rust。似乎 Rust 没有提供任何对应于 C 或 C++ 的函数或运算符,至少在稳定版本中是这样。

Heap结构和 ptr模块(标有experimental)这种东西要看什么?

我知道这些数据结构已经在语言中了。这是为了学习。

最佳答案

虽然真的不建议这样做,但您可以像在 C 中习惯的那样使用 mallocfree。它不是很有用,但它是这样的看起来:

extern crate libc; // 0.2.65

use std::mem;

fn main() {
unsafe {
let my_num: *mut i32 = libc::malloc(mem::size_of::<i32>() as libc::size_t) as *mut i32;
if my_num.is_null() {
panic!("failed to allocate memory");
}
libc::free(my_num as *mut libc::c_void);
}
}

更好的方法是使用 Rust 的标准库:

use std::alloc::{alloc, dealloc, Layout};

fn main() {
unsafe {
let layout = Layout::new::<u16>();
let ptr = alloc(layout);

*(ptr as *mut u16) = 42;
assert_eq!(*(ptr as *mut u16), 42);

dealloc(ptr, layout);
}
}

关于memory-management - Rust 手动内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48485454/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com