Box

1

动态分配和容器

4 分钟

C 里动态分配通常从这几个函数开始:

void *p = malloc(size);
p = realloc(p, new_size);
free(p);

Rust 普通代码很少直接调用分配器。更常见的是用拥有类型表达“这块内存归谁管”:

Box<T>     -> 堆上的一个 T
Vec<T>     -> 堆上的连续可增长数组
String     -> 堆上的可增长 UTF-8 文本

这些类型内部当然会分配和释放内存,但调用方通常不写 free。值离开作用域时,释放由类型的 Drop 完成。

阅读更多