如果我不得不使用 Yocto,但我不需要自定义操作系统,而是更喜欢常见的 ubuntu 16.04,该怎么办?有没有办法使用 yocto 环境创建它?
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仍然存在,为什么没有发生?