c++ new delete 相关应用——申请连续空间不允许部分释放

embedded/2024/9/23 14:26:46/

new delete 详解

实验1

    int **all_a = new int* [2]; // 申请了一片空间足够存储两个int类型指针。//  返回对象是指向空间头的指针,因此是int**int* a = new int [3];//申请了足够存储3个int 的空间,返回空间开始位置的指针 int* b = new int [3];//申请了足够存储3个int 的空间,返回空间开始位置的指针 all_a[0] = a;//all_a[0] 是为指针变量保留的空间,值为一个指针变量all_a[1] = b;//all_a[1] 是为指针变量保留的空间,值为一个指针变量cout<<all_a[0]<<" "<<all_a[1]<<endl;// 0x55555556aed0 0x55555556aef0//注意,这里输出的是两个指针的值 对应a bcout<<&all_a[0]<<" "<<&all_a[1]<<endl;// 0x55555556aeb0 0x55555556aeb8//输出a b这两个指针变量 被存储在的空间地址//指针变量32位,占据空间为8 个字节,所以两个指针变量存储的地址差8cout<<all_a<<" "<<all_a+1<<endl;//这个语句和上面是等价的// 0x55555556aeb0 0x55555556aeb8 

实验2

    int **all_a = new int* [2];int* a = new int [3];int* b = new int [3];all_a[0] = a;all_a[1] = b;delete[] a;delete[] b;delete[] all_a;
//    delete all_a;这么写是错误的!!!因为 all_a是一个指针数组,必须按照指针数组的方式来释放空间。return 1;
}

实验3

    int **all_a = new int* [2];int* a = new int [3];int* b = new int [3];all_a[0] = a;all_a[1] = b;delete[] a;delete[] b;delete &all_a[1];//本意:既然all_a 分配了足够存储  两个指针变量的空间, 那么释放的时候,是否允许只释放一个指针变量的空间,保留另外一个呢?//运行结果:invalid pointer//结论:不允许!!!return 1;
}

实验4

    char* a = new char[10];//这里连续分配了10个char变量的空间,是否可以只释放一个char变量的空间呢?delete (a+3); //释放第四个char变量的空间//运行结果:invalid pointer//结论:不允许!!!return 1;

http://www.ppmy.cn/embedded/23831.html

相关文章

什么是环比折年率

环比折年率是月度&#xff08;或季度&#xff09;统计中一个十分重要的统计指标&#xff0c;由环比增速推算得到&#xff0c;用于反映经济的发展速度与趋势变化。环比折年率与同比增速相比具有对趋势变化灵敏度高的优点&#xff0c;在统计分析、趋势预测等领域有着广泛应用。 …

STM32用HAL库函数实现硬件IIC

/*出处&#xff1a;【STM32入门教程-2024】第12集 IIC通信与温湿度传感器AHT20(DHT20)_哔哩哔哩_bilibili */ AHT20驱动 这篇笔记我主要介绍代码实现&#xff0c;想要了解原理的请自己看视频&#xff0c;我不过多赘述了。 AHT20通信数据帧格式&#xff1a; ①对照手册上的通…

游戏新手村17:游戏市场营销的分类

营销&#xff08;Marketing&#xff09;&#xff0c;港台地区译为行销/市场行销。根据美国营销学会&#xff08;AMA&#xff09; 2008年的定义&#xff0c;市场营销是创造、传播、交付和交换那些对顾客、客户、合作伙伴和社会有价值的市场供应物的活动、制度和过程。可以简单理…

代码随想录训练营26day-贪心算法4

一、860 柠檬水找零 题目解析&#xff1a;注意一开始是没有零钱&#xff0c;也只会取5 10 20三类数字&#xff0c;因此从这3类数字出发&#xff0c;去判断。 1 如果是5元&#xff0c;那么直接收&#xff0c;five&#xff1b; 2 如果是10元&#xff0c;那么需要five--&#x…

【Vue3】toRefs与toRef的使用

文章目录 toRefs简介toRef简介错误案例 toRefs简介 toRefs对对象内多个值转换成响应式数据 代码展示 let testData reactive({aa:"111",bb:"222",cc:"333"})//转为响应式数据let {aa,bb,cc} toRefs(testData)console.log(aa);console.log(bb)…

深入了解 npm

深入了解 npm&#xff1a;Node.js 的强大包管理工具 Node.js 的开发者们都知道&#xff0c;有效的包管理是任何项目成功的关键之一。这里&#xff0c;我们将深入探讨 npm&#xff08;Node Package Manager&#xff09;&#xff0c;这是 Node.js 最受欢迎的包管理器&#xff0c…

提交链码-编辑前后端,调用链码功能

一 . 链码介绍 1.什么链码&#xff1f; • 链码是一段用 Go、Node.js 或者 Java 实现了规定接口的程序。链码在安全的Docker容器中运行&#xff0c; 与背书节点的进程隔离。通过应用程序提交的交易&#xff0c;链码初始化和管理账本状态。• 链码通常处理网络成员协商达成的业…

最佳实践|Apifox 中通过 CryptoJS 给请求参数进行 AES 加密!

假如现在要在 Apifox 中发送一个「登录」的请求&#xff0c;然后我需要将接口中的 password 参数使用 AES 加密算法加密以后&#xff0c;再传给后台服务&#xff0c;这要怎么做&#xff1f; 要在 Apifox 中使用 AES 加密算法对 password 参数进行加密&#xff0c;你需要在「前置…