RUST Arc

Arc 是 Atomically 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

相关推荐
孙启超3 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
mikuyyds3 天前
geo-toolbox 水文插件算法解析:从 Muskingum 到 Muskingum-Cunge
算法·rust·gis
PC2005-cloud3 天前
Rust学习笔记:模块系统——mod、use、pub与多文件项目
rust
Amos_Web3 天前
Rspack 源码解析(十二):JavaScript Chunk 是如何被渲染出来的
前端·rust·源码
柯南46683 天前
【AI开发之Rust】第 14 课:网络请求与 JSON —— reqwest + serde
rust·编程语言
恋喵大鲤鱼3 天前
Rust 格式化输出占位符详解
rust
孙启超3 天前
【AI开发之Rust】第 13 课:async/await 与 tokio 异步运行时
开发语言·后端·rust
小道士写程序3 天前
Rust + Axum + MySQL + SQLx
rust
mikuyyds3 天前
geo-toolbox 插件算法解析:RUSLE 与 MUSLE 的工程化落地
算法·rust·gis