C++中new和delete来创建和释放动态数组
时间:2021-09-22
本文章向大家介绍C++中new和delete来创建和释放动态数组,主要包括C++中new和delete来创建和释放动态数组使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原文转载:https://www.cnblogs.com/wft1990/p/5962898.html
在C++编程中,使用new创建数组然后用delete来释放。
一、创建并释放一维数组
#include<iostream> using namespace std; int main() { int n; cin>>n; //分配动态一维数组 int *arr=new int[n]; for(int i=0;i<n;i++) cin>>arr[i]; for(int i=0;i<n;i++) cout<<arr[i]<<" "; //释放arr数组 delete[] arr; return 0; }
注意:delete后面的[]不能少。
二、创建并释放二维数组
#include<iostream> using namespace std; int main() { int row,col; cin>>row>>col; //为行指针分配空间 int **arr=new int *[row]; for(int i=0;i<row;i++) arr[i]= new int[col];//为每行分配空间(每行中有col个元素) //输入二维数组的数 for(int i=0;i<row;i++) for(int j=0;j<col;j++) cin>>arr[i][j]; cout<<"*******************"<<endl; //输出二维数组中的数 for(int i=0;i<row;i++) { for(int j=0;j<col;j++) cout<<arr[i][j]<<" "; cout<<endl; } //释放二维数组(反过来) for(int i=0;i<row;i++) delete[] arr[i]; delete[] arr; return 0; }
三、new创建类
”new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘 。 new的过程 当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:1、获得一块内存空间 2、调用构造函 数 3、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如 下一个类A: class A { int i; public: A(int _i) :i(_i*_i) {} void Say() { printf("i=%dn", i); } }; //调用new: A* pa = new A(3); 那么上述动态创建一个对象的过程大致相当于以下三句话(只是大致上): A* pa = (A*)malloc(sizeof(A)); pa->A::A(3); return pa; 虽然从效果上看,这三句话也得到了一个有效的指向堆上的A对象的指针pa,但区别在于,当malloc失 败时,它不会调用分配内存失败处理程序new_handler,而使用new的话会的。因此我们还是要尽可能的使用 new,除非有一些特殊的需求。
原文地址:https://www.cnblogs.com/MCSFX/p/15320942.html
- [C#6] 6-表达式形式的成员函数
- 在启用了IPV6的机器上获取客户端ipv4地址
- 使用 MDT 2010 进行可伸缩部署
- 性能优化工具 MVC Mini Profiler
- 在ASP.NET应用启动的时候初始化的几种方法
- [C#6] 8-异常增强
- 信息超新星的诞生
- jquery mobile 移动web(2)
- [腾讯社区开放平台].NET SDK基于New BSD协议开源
- IIS7.5上的REST服务的Put操作发生HTTP Error 405.0 - Method Not Allowed 解决方法
- 使用 asp.net mvc和 jQuery UI 控件包
- jquery mobile 移动web(1)
- WordPress Plugin Boilerplate:一个WordPress 插件开发模板(框架)
- [C#6] 5-自动属性增强
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 专题一:预处理数据(使用sklearn-preprocessing)
- 「Docker」使用 Docker run 覆盖 ENTRYPOINT
- 尝试在 Mono 3.0 下运行 ASP.NET MVC 4
- CentOS7使用yum安装nginx报错:获取 GPG 密钥失败:[Errno 14] curl#60 - "Peer's Certificate has expired."
- iOS 应用使用位置信息
- Silverlight CreateObjectEx 参考
- NHibernate 配置使用 Formula
- Not allowed to navigate top frame to data URL问题
- MonoTouch绑定CocoaTouch类库
- NuGet 使用自定义本地类库目录
- Flutter/Dart中的异步编程之Isolate
- System.Net.Http for Silverlight
- 在SAP WebClient UI里混用ABAP Webdynpro,会带来哪些问题?
- 设计模式之中介者模式
- SAP WebClient UI创建Value help最详细的步骤