C++_28_空指针、野指针、智能指针 - 重写版

发布时间 2023-12-04 00:10:59作者: 尘落曦枫

 

野指针:没有明确执向的指针,可能会胡乱指向任意一个变量;编程的时候绝不允许出现野指针;

int *p; //错误,未初始化指向一块地址,会变成野指针

如果确实需要先不指定到需要使用的内存,那就先定义一个空指针;
-------》宁愿指向为空也不要为野;因为野指针你把握不住;

 

空指针:让指针指向NULL;就是指向为0,把0强制转为了一个void * 类型指针;虽然为空,但是确实明确指向一个为空的地址;

int* p = NULL;
cout <<"p = " << p << endl; //输出 P= 00000000

 

-------->>>这块内存是给你了,地址是P= 00000000;但是这块内存归系统管理,不能操作存储数据

 

智能指针:智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。

 智能指针有这么几种,这里没有列举完:
1)auto_ptr:自动指针
2)scoped_ptr:守卫指针
3)shared_ptr:共享指针
4)shared_array:共享数组
5)weak_ptr:弱指针