【问题标题】:How does share_ptr release memory when main ends?main 结束时 shared_ptr 如何释放内存?
【发布时间】:2019-11-17 08:27:05
【问题描述】:

据说这和线程有关,我对操作系统不太了解。谢谢你的回答。

int main(){
    shared_ptr<int> p = make_shared<int>(1024);
    //do nothing,end my program
}

如果我签入main,use_count()将为1,怎么为0?或者我需要释放操作。

【问题讨论】:

    标签: c++ operating-system


    【解决方案1】:

    与操作系统无关,shared_ptr 析构函数释放内存,因为p 是一个局部变量,所以当 main 结束时作用域将结束(即调用析构函数)。

    【讨论】:

    • 可能是我的理解有误。不是只有当计数器为0时才调用析构函数吗?
    • 当main结束,p离开作用域,那么计数器减1?明白了吗?
    • 这是正确的,这种情况下的引用计数器在离开作用域时会变为零,从而破坏了它拥有的对象。
    猜你喜欢
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 2013-01-04
    • 2014-06-24
    • 2014-09-12
    • 2017-10-16
    相关资源
    最近更新 更多