C++ 智能指针与内存映射:std::shared_ptr 与 mmap 的深入解析
1. std::shared_ptr 指针介绍
在多数情况下, std::unique_ptr 用于分配动态内存。然而,在某些场景中, std::unique_ptr 无法很好地表示指针所有权。指针所有权指的是谁拥有指针,即谁负责分配和释放指针。多数情况下,程序中的单个实体负责此任务,但有些场景需要多个实体共同负责释放指针。
线程场景是多个实体需共享指针所有权的常见情况。例如有两个线程:
- 线程 1 创建指针并拥有它。
- 线程 2 使用线程 1 创建的指针。
以下示例展示了该场景:
#include <thread>
#include <iostream>
class myclass {
int m_data{0};
public:
~myclass() {
std::cout << "myclass deleted\n";
}
void inc() { m_data++; }
};
std::thread t1;
std::thread t2;
void thread2(myclass *ptr) {
for (auto i = 0; i < 100000; i++) {
ptr->inc();
}
std::cout << "thread2: complete\n";
}
void
超级会员免费看
订阅专栏 解锁全文
902

被折叠的 条评论
为什么被折叠?



