std::shared_ptr
std::shared_ptr,在 C 11 中引入,提供一种管理具有共享所有权的动态分配对象的方法。然而,使用 std::shared_ptr
工作示例
考虑以下代码片段:
<code class="cpp">#include <memory> #include <vector> class Test { public: Test() { std::cout << "Test created" << std::endl; } ~Test() { std::cout << "Test destroyed" << std::endl; } }; int main() { std::vector<std::shared_ptr<void>> v; { v.push_back(std::shared_ptr<Test>(new Test())); } return 0; }</code>
令人惊讶的是,此代码输出:
Test created Test destroyed
这表明 Test 对象已被正确销毁,即使它由 std::shared_ptr
底层机制
std::shared_ptr 提供类型擦除,将托管对象的类型与实现分离。在内部,它存储了一个删除器函数,该函数根据原始对象的类型调用适当的析构函数。
当 std::shared_ptr
标准合规性和可靠性
虽然所描述的行为当前有效,但它依赖于实现细节,并且C 标准不保证。这是由于两个原因:
因此,使用 std::shared_ptr
以上是std::shared_ptr 可以用于在关闭时进行可靠的清理吗?的详细内容。更多信息请关注PHP中文网其他相关文章!