首页 > 编程语言 >C++_28_空指针、野指针、智能指针 - 重写版

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

时间:2023-11-05 23:22:22浏览次数:37  
标签:指向 28 C++ 智能 内存 为空 ptr 指针

 

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

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:弱指针

标签:指向,28,C++,智能,内存,为空,ptr,指针
From: https://www.cnblogs.com/zlxxc/p/17811543.html

相关文章

  • 实验三 类与数组,指针
    Task1:point.hpp:#pragmaonce#include<iostream>usingstd::cout;usingstd::endl;classPoint{public:Point(intx0=0,inty0=0);~Point()=default;intget_x()const;intget_y()const;voidshow()const;voidm......
  • 类与数组、指针
    任务1point.hpp#pragmaonce#include<iostream>usingstd::cout;usingstd::endl;classPoint{public:Point(intx0=0,inty0=0);~Point()=default;intget_x()const;intget_y()const;voidshow()const;voidmove(intnew_x,i......
  • C++_02_命名空间和作用域运算符 - 重写版
    命名空间在C++中命名空间(namespace)的作用:命名空间,就是为了解决同一个源代码中相同命名的变量或者函数之间相互冲突的问题,就是要避免这种冲突,让程序代码中可以多次使用同一个标识符而存在的。对于一名开发者而言,代码量过于庞大,或多或少会忘记之间之前用过的变量名或函......
  • C++_01_初步认识C++语言 - 重写版
    一、认识“C++语言”一、首先聊聊什么是语言?语言是一套具有“语法”、“词法”规律的系统,是思维的工具。计算程序设计语言是计算机可以识别的语言,用于描述解决问题的方法,供计算机阅读和执行。语言由低级到高级依次分为4类:1、机器语言     (由......
  • C++_28_重载、重写、重定义
    1、重载同一作用域的同名函数,重复定义;参数格式、参数顺序或者参数类型不同;函数重载和函数的返回值没有任何关系 2、重写  3、重定义......
  • 实验三 类与数组、指针
     1.实验任务1point.hpp1#include<iostream>2#include"point.hpp"3#include<vector>4usingstd::vector;5usingstd::cin;6//输出vector<Point>对象内所有点的坐标7voidoutput(constvector<Point>&v){8for(aut......
  • 实验三 类与数组指针
    第一个任务#pragmaonce#include<iostream>usingstd::cout;usingstd::endl;classPoint{public:Point(intx0=0,inty0=0);~Point()=default;intget_x()const;intget_y()const;voidshow()const;voidmove(intnew......
  • 实验3 类与数组、指针
    1、实验任务1源码Point.hpp#pragmaonce#include<iostream>usingstd::cout;usingstd::endl;classPoint{public:Point(intx0=0,inty0=0);~Point()=default;intget_x()const;intget_y()const;voidshow()const;void......
  • 实验三 类与数组,指针
    任务1:1.代码:point.hpp:1#pragmaonce23#include<iostream>4usingstd::cout;5usingstd::endl;6classPoint{7public:8Point(intx0=0,inty0=0);9~Point()=default;10intget_x()const;11intget_y()const;12voidshow(......
  • 实验3 类与数组指针
    task1 point.hpp#pragmaonce#include<iostream>usingstd::cout;usingstd::endl;classPoint{public:Point(intx0=0,inty0=0);~Point()=default;intget_x()const;intget_y()const;void......