小编Fra*_*o.S的帖子

YOCTO 如何创建一个基本的 ubuntu 16.04 linux

如果我不得不使用 Yocto,但我不需要自定义操作系统,而是更喜欢常见的 ubuntu 16.04,该怎么办?有没有办法使用 yocto 环境创建它?

ubuntu bitbake yocto

3
推荐指数
1
解决办法
3504
查看次数

为什么即使仍然存在弱指针,make_shared 也会调用析构函数?

make_shared()从理论上讲,和之间的一个区别shared_ptr是内存分配技术。make_shared()应该使用单个块,而shared_ptr应该使用两个块。

一个make_shared()缺点应该是,即使有一个活着的内存也无法释放weak_ptr

有人可以解释为什么这个程序的输出总是相同的,独立于我用来创建的函数shared_ptr

#include <iostream>
#include <memory>

class mc
{
    public:
      mc(int p):p_{p} {std::cerr<<"Constructor"<<std::endl;}
      ~mc() { std::cerr<<"Destructor"<<std::endl;}    
    private:
      int p_;    
};

std::weak_ptr<mc> wp3;

int main()
{
 
    auto sp=std::make_shared<mc>(4);
    auto sp2=sp;
    auto sp3{sp};
    wp3=std::weak_ptr<mc>{sp};
    
    sp2.reset();
    sp3.reset();
    sp.reset();
     
    for (int i =0;i< 5;i++) {std::cerr<<sp.use_count()<<std::endl;}   

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我期待最后调用析构函数方法,因为它weak_ptr仍然存在,为什么没有发生?

c++ shared-ptr make-shared

2
推荐指数
1
解决办法
303
查看次数

标签 统计

bitbake ×1

c++ ×1

make-shared ×1

shared-ptr ×1

ubuntu ×1

yocto ×1