所有权与智能指针
没错,技术博主开始写技术文了 从我开始学C/C++的时候,指针和内存管理就是最让我头疼的东西:要么是忘了释放内存造成内存泄露,要么是多重释放造成了访问失败。甚至有些时候一个方法有多个返回语句的时候还要在每一个返回语句前释放一下内存。当时就在想为什么不能像Java一样有一个智能的垃圾回收器,来管理所有的内存呢。 这个痛点一直困扰到我开始学STL。原来STL早就考虑到手动释放内存的繁琐,所以提供了多种智能指针:auto_ptr, unique_ptr, shared_ptr, weak_ptr,并引入了“所有权”这个概念。大大简化了工程项目中的内存管理。也让我意识到我学的是假C++,真C(菜)。 所有权 单一所有权 两句话:所有权的拥有者有义务释放内存或转移所有权。同一时刻只会有一个所有权拥有者。 共享所有权 和用裸指针一样,所有权的拥有者不必负责释放内存,引用计数器会负责释放内存。同一时刻可以有多个所有权拥有者。 unique_ptr 重要的事情说三遍: unique_ptr 不能被拷贝 unique_ptr 不能被拷贝 unique_ptr 不能被拷贝 unique_ptr […]