Skip to content

Latest commit

 

History

History
115 lines (71 loc) · 4.52 KB

03-smart-pointers.md

File metadata and controls

115 lines (71 loc) · 4.52 KB

Team 03 Smart Pointers

Members

Name Student ID Github ID
王若晖 PB15000142 noirgif
张一卓 PB15111610 eastOffice
钱劲翔 PB15151800 Qianjx

Content

智能指针是一种模拟指针的行为,但提供如自动内存管理功能的抽象数据类型。它对普通指针加了一层封装机制,其目的是为了使得智能指针可以方便的管理一个对象的生命期。正确使用智能指针,可以方便的防止指针的悬空引用,内存泄漏等问题。

本次项目尝试从C++的智能指针入手,探索并讨论如下内容:

分工

  • 王若晖:
    • Rust 语言中的智能指针及其内存管理
  • 张一卓:
    • C++ 中 smart pointer 的标准,实现方式和内存管理
    • C++ smart pointer 的简单实现
  • 钱劲翔:
    • raw pointer 在应用中可能产生的问题
    • C++ 标准库以及 boost库中部分 smart pointers 的分析

第一次提交

提交内容

王若晖:

  • 阅读Rust文档,完成Rust中Box和Rc的部分描述。

张一卓:

  • 阅读了C++智能指针的大部分源码,寻找参考文献
  • 结合源码总结了 std::auto_ptr 的使用方式,源码的策略,以及引入了 RAII 的概念
  • 完成std::auto_ptr部分的编写

钱劲翔:

  • 对C/C++中raw pointer部分问题的描述

下一步计划

  • 继续结合源码,添加std::unique_ptr, std::shared_ptr 的分析
  • 调研 C++ 标准库以外的智能指针,主要是 boost 库
  • 完成Rc<T>RefCell<T>的描述,和其内存管理
  • 考虑自己实现一个基于计数与不基于计数的 C++ 智能指针
  • 加强讨论,与 GC 组交流一下

第二次提交

提交内容

王若晖:

  • 完成Rc<T>(包括Weak<T>)的描述,简要描述Arc<T>

张一卓:

  • 继续结合源码,分析了std::unique_ptrstd::weak_ptr的使用方式和实现机制,并编写了一些示例程序
  • 补充文档,见 cpp-smart-pointer.md

钱劲翔:

  • 结合源码分析了std::shared_ptr的使用和实现,补充了文档cpp_smart_pointer.md
  • 调研了boost库中的一些智能指针,介绍了它们的特点,编写示例程序说明使用方式,文档见 boost-smart-pointer.md

下一步计划

  • 完成 C++ 智能指针的简单实现
  • 整理完善所写的文档
  • 丰富Rust中几个类的实现细节,探索其实际利用(以Servo为例)
  • 与 GC 组讨论,互提 issue

第三次提交

提交内容

王若晖:

  • 简要描述Arc<T>,并简述Rust性质

张一卓:

钱劲翔:

  • 完善并整理文档,用 gitbooks 发布

Links

Teamwork Repository

C++ source code of smart pointers:

auto_ptr, unique_ptr, shared_ptr, weak_ptr

ICSE2016-SERVO

Rust doc

使用整理过的 gitbooks 作为答辩材料