首页 > 试题广场 > 说说 C++ 中智能指针和指针的区别是什么?
[问答题]
说说 C++ 中智能指针和指针的区别是什么?
智能指针可以自动释放,由于智能指针是属于RAII机制,所以当一个对象的生命周期到了以后就会调用析构函数完成指针指向内存的回收,而指针需要程序员手动释放
发表于 2022-07-31 11:24:40 回复(0)
内存对齐是为了实现自然对齐,通过自然对齐的方式能够提高CPU访址的速度(最主要的目的)。其规则是其存储的位置是其大小的整数倍。 内存对齐问题主要出现在struct、class、enum中 对于结构体和类:首先得明确成员函数是放在代码区的,所以不占用类的内存空间。 其内部的每一个成员变量要符合字节对齐,第一个成员每次都在偏移量为0的位置。在求sizeof时要注意其大小不是直接相加,要注意内存对齐问题。其结果一定是最长的数据成员的整数倍 对于枚举类型,每次只会实例化一个,所以会以最大的为内存分别的标准,并且占用的地址可以被所以成员变量的长度整除。不是刚好的一概向后扩展知道满足。
编辑于 2022-08-02 22:45:28 回复(0)
智能指针从使用new从堆分配内存,然后delete释放,引入三种智能指针,unique_ptr,shared_ptr,weak_ptr
发表于 2022-09-20 22:04:06 回复(0)
移动语义:将其他对象(通常是临时对象)拥有的内存资源“移为己用”
发表于 2022-09-10 10:26:14 回复(0)
我们自己在创建指针时,使用new去申请堆内存,使用delete去释放内存,有时候忘记释放就会造成内存泄漏;智能指针(shared_ptr/weak_ptr/unique_ptr)可以自动释放内存。除此之外,指针是一种数据类型,用于保存一块内存地址,而智能指针是类模板。
发表于 2022-09-06 20:54:45 回复(0)
vector,string,set,map,deque,list等
编辑于 2022-08-03 19:43:29 回复(0)
智能指针和普通指针的区别 智能指针和普通指针的区别在于智能指针实际上是对普通指针加了一层封装机制,区别是它负责自动释放所指的对象,这样的一层封装机制的目的是为了使得智能指针可以方便的管理一个对象的生命期。指针是一种数据类型,用于保存内存地址,而智能指针是类模板。
发表于 2022-07-31 15:10:12 回复(0)
智能指针可以自己释放 是一个类本质
发表于 2022-05-18 11:40:48 回复(0)