智能指针和普通指针转化
a.智能指针的关键技术:在于构造栈上对象的生命期控制 堆上构造的对象的生命期.因为在智能指针的内部,存储 着堆对象的指针,而且在构析函数中调用delete行为. 大致机构如下: x* m_PTRx = new x(100);//#1 template<typename T> auto_ptr{ private: T* m_PTR;//维护指向堆对象的指针,在auto_ptr定位后 ....
野指针,顾名思义就是狂野的,“没有家”的指针,也就是指向的那块地址可能是无效的,尤其常见发生在一种情况,就是指针在释放之后,我们还去访问它指向的那块地址,就可能会发生意想不到的结果,并且这种野指针可能会对我们的程序造成伤害,且无法在最初编译阶段发现报错,甚至运行过程中也没有异常发生,只是我们得不到...
当我们对智能指针进行赋值时,如ptest2 = ptest,ptest2会接管ptest原来的内存管理权,ptest会变为空指针,如果ptest2原来不为空,则它会释放原来的资源,基于这个原因,应该避免把auto_ptr放到容器中,因为算法对容器操作时,很难避免STL内部对容器实现了赋值传递操作,这样会使容器中很多元素被置为NULL。判断一个智能指针...
类似的函数还有dynamic_pointer_cast,该函数是用来对智能指针进行转换的,可以理解为是dynamic_cast的智能...
this 指针是一个隐含于每一个非静态成员函数中的特殊指针。它指向正在被该成员函数操作的那个对象。 当对一个对象调用成员函数时,编译程序先将对象的地址赋给 this 指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用 this 指针。 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向...
shared_ptr 是一种引用计数型智能指针(smart pointer),包含两个元素:指针、引用计数。所谓引用计数(reference counting),记录有多少个 shared_ptrs 共同指向一个对象。一旦最后一个这样的指针被销毁,即某个对象的引用计数为0,则这个对象会被自动删除,这在非环形数据结构中防止资源泄露是很有帮助的。
是一种修改指针指向的数据的访问权限的操作。通过将指针声明为const,可以防止对指针指向的数据进行修改,从而增强程序的安全性和可靠性。 C样式数组是一种基于指针的数据结构,由连续的内存单元组成,用于...
个人觉得难在指针和内存的关系上,初学者大多没搞清楚这个概念。其实指针就是指向变量的,代表着变量在...
上述的SmartPtr还不能将其称为智能指针,因为它还不具有指针的行为。...3.3 std::auto_ptr C++98版本的库中就提供了auto_ptr的智能指针。下面演示的auto_ptr的使用及问题。...+11中开始提供更靠谱的unique_ptr unique_ptr的实现原理:简单粗暴的防拷贝,下面简化...