当前位置: 首页 > news >正文

情人节new一个对象给你

今天情人节,有没对象的吗?假设你不知道new怎么用,每个人都有两种身份,一种没对象的人,这个时候new一个对象给你,一种是有对象的人,这个delete对象。等你学完这个new和delete知识点,无论何时何地,你都能new或者delete一个对象。

一.关于new与delete

new和malloc一样,就是告诉计算机开辟一段新的空间,但是和一般的声明不同的是,new开辟的空间在堆上,而一般声明的变量存放在栈上。new开辟空间和普通变量开辟空间不同,比如为普通变量开辟的内存(在栈区),在函数体里面使用完之后就会立即被操作系统释放,而new开辟的内存(在堆区)在函数结束的时候必须由程序员手动释放,如果这块内存不用了,用delete运算符释放它

二.使用堆区的内存有四个步骤:

1)声明一个指针;

2)用new运算符向系统申请一块内存,让指针指向这块内存;

3)通过对指针解引用的方法,像使用变量一样使用这块内存;

4)如果这块内存不用了,用delete运算符释放它。

注意: 如果申请成功,返回一个地址;如果申请失败,返回一个空地址;

释放内存的语法:delete 地址;

释放内存不会失败(还钱不会失败)。

三.申请内存的语法:

  • new 数据类型

  • new 数据类型(初始值)

  • new 数据类型[常量表达式]

四.示例:

  int  * p1=new int;//new一个整形对象int* p2 = new int(2); // *p2初始化值是2,这样直接在定义后面初始化是可以的cout << "*p=" << *p << endl;*p = 8;//解引用修改p所直指向的值也是可以的cout << "*p=" << *p << endl;delete p;//如果不想使用指针,可以定义一个变量,在new之前用“*”表示new出来的内容int q = *new int;q = 1;cout << q << endl;int  *p3=new int[1000] //申请1000个单位内存空间int* example2()
{//当new一个数组时,同样用一个指针接住数组的首地址int *q = new int[3];for(int i=0; i<3; i++)q[i] = i;return q;
}struct student
{string name;int score;
};student* stu()
{//这里是用一个结构体指针接住结构体数组的首地址//对于结构体指针,个人认为目前这种赋值方法比较方便student *stud = new student[3]{{"张三", 100}, {"李四", 100}, {"王五", 100}};return stud;
}

注意:

  • 动态分配出来的内存没有变量名,只能通过指向它的指针来操作内存中的数据。

  • 如果动态分配的内存不用了,必须用delete释放它,否则有可能用尽系统的内存。

  • 动态分配的内存生命周期与程序相同,程序退出时,如果没有释放,系统将自动回收。

  • 就算指针的作用域已失效,所指向的内存也不会释放。

  • 用指针跟踪已分配的内存时,不能跟丢。

http://www.lryc.cn/news/6968.html

相关文章:

  • linux篇【15】:应用层-网络https协议
  • 索引-性能分析-explain
  • mbedtls加密组件使用示例
  • 如何量测太阳光模拟器的光谱致合度?
  • 网络安全领域中CISP证书八大类都有什么
  • 17- 梯度提升回归树GBRT (集成算法) (算法)
  • 05 OpenCV色彩空间处理
  • 【CS224图机器学习】task1 图机器学习导论
  • Powershell Install SQL Server 2022
  • Jetson NX2 装机过程
  • 初始C++(四):内联函数
  • 九、初识卷积
  • 【Linux】【编译】编译调试过程中如何打印出实际的编译命令
  • linux安装jdk
  • 迅为iTOP-3A5000龙芯开发板安装UOS操作系统
  • Firefox 110, Chrome 110, Chromium 110 官网离线下载 (macOS, Linux, Windows)
  • 如何使用ArcGIS转换坐标
  • 链表基本原理
  • 基于JAVA+SpringBoot+Vue+ElementUI中学化学实验室耗材管理系统
  • 1.输入子系统学习-struct input_dev-2023.02
  • 解决:PDFBox报的java.io.IOException: Missing root object specification in trailer
  • MAC OSX安装Python环境 + Visual Studio Code
  • 音乐 APP 用户争夺战,火山引擎 VeDI 助力用户体验升级!
  • CAP和BASE理论
  • 基于商品理解的成交能力和成交满意度优化在Lazada的实践
  • idea推送镜像到desktop报错:Cannot run program “docker-credential-desktop“ 系统找不到指定的文件。
  • hive开窗函数
  • 安全多方计算系列笔记1——前世今生
  • 16- 梯度提升分类树GBDT (梯度下降优化) (算法)
  • SpringCloud+Nacos+Gateway