| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C++面向对象核心编程必备知识点之----堆区 -> 正文阅读 |
|
[C++知识库]C++面向对象核心编程必备知识点之----堆区 |
目录 1.堆区概念c++中内存有四个区,分别是代码区,全局区,栈区,堆区 2.new的基本语法2.1相应类型指针变量进行接收new关键字用于在堆区中申请内存时,有着一定的语法规则
分别输出int整型指针变量p的内容和float单精度浮点型指针变量b的内容 结果如下图所示: 可以正常输出 2.2非对应类型指针变量进行接收(会报错)试着用float类型指针接收开辟的int内存
?产生了错误,提示是:int 类型的值不能用于初始化float类型的实体 从这个报错内容可以看出:01.new返回的同类型的指针,要用同类型指针接收new出来的数据 2.3不用指针变量接收(结果?)如果不对new的内容进行接收,能输出么?
输出结果是一串地址,也间接说明了new关键字开辟出的是地址,既然是地址,就要用指针来接收,上一步验证过了要用同类型的对应指针型变量来接收,并且解指针后输出相应内容 ?2.4直接解指针输出new内容(结果?)那么直接用*解指针new出的内容呢?
从输出结果与之后的用指针型变量来接收的结果来看,是一样的,所以,直接输出解指针new的数据可行,但是为啥不常用呢,从个人角度来看,可读性不高且不够美观,所以不常用,习惯性用相应类型指针变量接收再解指针输出,显得更直观些 3.delete释放new开辟出的内存释放内存两种方式: 3.1delete在普通变量中的的用法(释放单个空间)对于普通变量,比如以下,可以在该变量之前加入delete关键字直接进行释放 p 是指向动态分配的内存的指针
引发了异常,访问权限 换句直白点的比喻就是说,你手上有100REN,拿去吃了顿饭,把100REN给了饭店老板,相当于这个100REN已经被你释放了,时候再问老板要,人家会给你么,这就产生了100REN的归属权,释放了100REN之后,那个100REN已经不属于你的私人财产范围了,你去染指,那就是超出了你的访问权限,属于非法访问,我们的编译器还是很公道的,不允许违法乱纪 3.2delete释放数组的用法(释放多个连续空间)如果我们按照释放普通变量(释放单个空间)的方法释放数组,会是怎样的?
结果如下,虽然可以正常输出,但其实数组并没有被释放
在释放new数组时,应该告诉编译器释放的是数组类型的arr,一一对应,不仅能达到真正的释放多个连续空间,也能增加代码健壮性 在arr 前面加[]中括号
4.总结和注意事项new delete使用时注意以下几点 1.当传入的形参是数组时,能加const的就加const,防止在函数内部中的意外操作 这样可以避免出现以下现象: 1.执行delete语句时,程序直接弹窗,崩溃 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 14:05:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |