RUST Arc

ArcAtomically Reference Counted 的缩写,即"原子引用计数"。

它的作用是:让多个所有者同时持有同一份堆上数据,且可以安全地跨线程使用。

Rust 里 Arc::new(value) 内部就是把数据分配到堆上,然后返回一个指向它的智能指针。对应到 C 大概是:

c 复制代码
  // C 的手动版本
  typedef struct {
      int ref_count;   // Arc 的引用计数
      YourData data;   // 实际数据
  } ArcInner;

  ArcInner* ptr = malloc(sizeof(ArcInner));
  ptr->ref_count = 1;
  ptr->data = ...; 

Arc::clone 就是 ref_count++,Arc 被 drop 就是 ref_count--,降到 0 就 free(ptr)。

区别在于:

  • C 里你得自己维护这套逻辑,容易 double-free 或 use-after-free
  • Rust 的 Arc 把这套计数逻辑封进类型系统,编译器帮你保证正确性,且 ref_count 的加减是原子操作(线程安全)

所以 Arc 本质上就是 线程安全的、自动管理的 malloc + 引用计数。

TODO: here

相关推荐
小灰灰搞电子18 小时前
Rust std::vec::Vec<T>动态数组:所有相关 API 全面介绍
开发语言·rust
学习星球18 小时前
CodeWhale 深度剖析:从 DeepSeek-TUI 到 40.9K Star 的 Rust 终端编程 Agent
开发语言·后端·rust
小灰灰搞电子20 小时前
Rust 相关容器(集合)详解
开发语言·容器·rust
小灰灰搞电子2 天前
Rust+Slint 实现侧滑菜单栏源码分享
开发语言·rust·抽屉式菜单栏
qq_406981032 天前
大白话rust系列01注释
开发语言·rust
zLLM_Lab2 天前
GPU kernel 已返回,显存为什么还不能释放?用 Rust 管理 CPU/GPU 完整生命周期
rust·gpu
对象存储与RustFS2 天前
给 RustFS 拆多租户权限:IAM 用户、组与策略的实战
后端·rust·开源
小灰灰搞电子2 天前
Rust+Slint 实现蜂巢菜单源码分享
开发语言·rust·蜂巢菜单.
mldong2 天前
流程实例如何沿着箭头走到结束:Rust 工作流引擎的执行内核
架构·rust