gpt4 book ai didi

c++ - RAII 和 shared_ptr 之间的关系是什么?

转载 作者:太空狗 更新时间:2023-10-29 20:25:04 26 4
gpt4 key购买 nike

我理解了 RAII(资源获取即初始化)的概念。它基本上说应该在析构函数中回收资源以避免任何内存泄漏。但是我不明白 shared_ptr 是 RAII 的一种。因为 shared_ptr 不保证指针会在栈尾被删除。删除完全取决于计数器。那么它和RAII有什么关系呢?

最佳答案

std::shared_ptr<T>将 RAII 扩展到具有多重所有权的资源。不必自己弄清楚何时删除共享对象,而是取下共享指针,让它销毁共享对象,但仅当它是最后一个引用时。

最好不要将共享指针指向的对象视为该共享指针对象拥有的对象。相反,人们可以将其视为由指向它的所有共享指针共同拥有。共享指针对象获取的资源不仅仅是对象本身,还有它的引用计数器。释放对象等同于减少引用计数器,但需要注意的是,一旦引用计数降为零,就必须进行额外的删除对象操作。

关于c++ - RAII 和 shared_ptr 之间的关系是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25049317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com