原文:std::shared_ptr的工作原理

前戏 先抛出两个问题 如果delete一个指针,但是它真实的类型和指针类型不一样会发生什么 是谁调用了析构函数 下面这段代码会发生什么有趣的事情 看一下汇编代码可以看到main函数主要做了下面这几件事 从汇编中可以看出,构造造函数和析构函数是编译器根据指针的类型生成的调用代码。而且编译器是不允许没有继承关系的指针之间进行转换的,void 是个例外,只要不作死用reinterpret cast把指针 ...

2017-12-28 23:41 0 4528 推荐指数:

查看详情

C++笔记-std::any、void*和shared_ptr<void>

参考资料: C++17之std::any https://blog.csdn.net/janeqi1987/article/details/100568181 std::any: How, when, and why: https://devblogs.microsoft.com/cppblog ...

Tue Apr 28 20:03:00 CST 2020 0 2198
shared_ptr原理与应用

new与赋值的坑 赋值(assignment)和new运算符在C++与Java(或C#)中的行为有本质的区别。在Java中,new是对象的构造,而赋值运算是引用的传递;而在C++中,赋值运算符意味着 ...

Sat Mar 01 09:54:00 CST 2014 1 4438
判断std::shared_ptr是否为空

想判断一个shared_ptr是否为空,去http://en.cppreference.com/w/cpp/memory/shared_ptr链接找了接口函数,未发现接口判断是否为空。 最后发现很简单,可以直接用if判断来实现。经@egmkang指出是重载了operator bool ...

Tue Sep 11 02:07:00 CST 2012 3 10832
std::shared_ptr使用方法和注意事项

1.创建 有三种方式,分别为构造函数、std::make_shared<T>辅助函数和reset方法 1.1构造函数 就像普通的类一样,需要在定义变量的时候,使用new 对象作为输入参数。但是这种方法需要两次申请内存空间,第一次是new,第二是智能对象本身需要申请的内存 ...

Wed Nov 18 22:20:00 CST 2020 0 2326
巧用std::shared_ptr全局对象释放单例内存

巧用std::shared_ptr 单例的使用相对比较广泛,但是需要在程序退出前调用它的析构函数对数据进行释放,常规做法是在main函数末尾进行释放工作, 但是这样相对比较繁琐,因此便有了利用全局变量由系统负载析构的特点,定义一个全局str::shared_ptr对象,对象指定对单例进行析构 ...

Tue Aug 28 02:01:00 CST 2018 1 1143
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM