首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

shared_ptr 和 unique_ptr 深入探秘

class unique_ptr;可以看到,Deleter 的类型是 unique_ptr 类型的一部分。...回到 unique_ptr,现在我们知道 unique_ptr 的报错链路是 unique_ptr->delete->sizoef,也就是 sizeof 才是罪魁祸首。...继续深挖一下,这个问题会出现在 shared_ptr 吗?答案是不会。这又引入了另一个问题,shared_ptr 和 unique_ptr 的封装有什么不同?...shared_ptr 的封装按理说 shared_ptr.reset 的时候需要 delete ptr 就需要 ptr 的类型(错了请指正),而 shared_ptr 的 template type 可以是...总结unique_ptr 只保存了类型指针 ptr 和这个指针的析构方法,调用 delete ptr,就需要ptr的完整类型,为了防止这个问题出现,直接通过 assert sizeof 排除掉了这种风险

35510
您找到你想要的搜索结果了吗?
是的
没有找到

PTR解析记录理解与用途

今天了解了PTR解析记录才明白是怎么一回事。 ---- 平常解析域名用的最多的应该就是A(AAAA)/CNAME类型了,其他的很少用到,也很少了解到。今天就说一下 我对PTR记录的理解。...百度百科中写到: PTR (Pointer Record),指针记录,是电子邮件系统中的一种数据类型,被互联网标准文件RFC1035所定义。与其相对应的是A记录、地址记录。二者组成邮件交换记录。...所以可以粗糙的理解为, PTR是A记录的反向,可以通过IP地址查到对应的域名记录。而拥有这个权限的是ISP(互联网服务提供商),只有向ISP申请才能实现PTR解析。...在php中,可以使用 gethostbyaddr 函数来进行查询; 在Linux下,可以通过 host 1.1.1.1 直接查询,或者 host -t PTR 1.1.1.1 来查询; 也可以通过 nslookup

2.6K30

X86 Assemble指令--ptr

Assemble指令中标识大小 在Assemble中通常会看到WORD ptr或者DWORD ptr或者BYTE ptr等关键字,这些关键字主要用来标识指令操作数的大小(或者说长度) WORD ptr...:标识该操作数为1个字 DWORD ptr:标识该操作数为2个字 BYTE ptr:标识该操作数为1个字节 基础知识 1 BYTE = 8 bits 1 WORD = 2 BYTE 1 DWORD...= 2 WORD 举例 and dword ptr [ebp-4], 0 ebp为栈指针的基址指针,总是指向当前方法栈的最底部,当函数返回后,该寄存器中的指针才会返回。...由于只是指出了目的操作数的内存基址,但是没有指出寄存器到底要操作一个BYTE,还是一个WORD,还是DWORD,所以需要加上dword ptr来表示进行与操作的时候,读取从ss:ebp-4的位置到ss:...参考资料 What does "dword ptr" mean? In assembly, what does "PTR" stand for?

67620

linux 内核函数 filp_open、filp_read、IS_ERR、ERR_PTRPTR_ERR 简介

filp_open filp_close vfs_read/write set_fs 内核态文件操作 在用户态,我们操作文件可以用C库函数:open()、read()、write()等,但是在内核态没有库函数可用...第三个参数创建文件时使用,设置创建文件的读写权限,其它情况可以设为0 该函数返回strcut file*结构指针,供后继函数操作使用,该返回值用IS_ERR()来检验其有效性。...几点说明:(从网上查找的资料) Linux Kernel组成员不赞成在kernel中独立的读写文件(这样做可能会影响到策略和安全问题),对内核需要操作的文件内容,最好由应用层配合完成。...ptr) { return (long) ptr; } static inline long __must_check IS_ERR(const void *ptr) {...错误的返回地址和错误号是可以使用 ERR_PTRPTR_ERR 相互转化的。

1.7K10

C++一分钟之-智能指针:unique_ptr与shared_ptr

unique_ptr与shared_ptr概览unique_ptrunique_ptr表示独占所有权的智能指针,同一时间内只能有一个unique_ptr指向给定的资源。...常见问题与易错点误用unique_ptr共享资源尝试复制unique_ptr会导致编译错误,因为它是独占所有权的。试图通过值传递或赋值方式分享unique_ptr管理的资源是错误的。...破坏循环引用使用weak_ptr:当不需要增加引用计数时,使用weak_ptr来监视shared_ptr而不增加其引用计数,可以打破潜在的循环引用。...代码示例unique_ptr示例#include void manageResource(std::unique_ptr ptr) { // 使用资源} // ptr在此处自动销毁...::move(ptr)); // 移动所有权到函数内 // ptr现在为空,资源已在manageResource内部被释放 return 0;}shared_ptr与weak_ptr示例#include

37210
领券