在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,除非有一些特殊的需求。

C++中new和delete来创建和释放动态数组相关推荐

  1. C++中使用模板,new创建2维动态数组

    1 // 使用模板和new创建2维动态数组 2 3 #include<iostream> 4 #include<exception> 5 #include<cstdlib ...

  2. C专家编程 第10章 再论指针 10.7 使用指针创建和使用动态数组

    使用指针创建和使用动态数组     当预先并不知道数据的长度时,可以使用动态数组.绝大多数具有数组的编程语言都能够在运行时设置数组的长度.它们允许程序员计算需要处理的元素的数目,然后创建一个刚好能容纳 ...

  3. C++中的开辟/释放动态空间new/delete

    在C语言中用于开辟/释放动态空间的关键词是malloc/free,该种开辟空间的方法在C++中,也适用,但除此之外C++还提供了另外一种开辟/释放动态空间的关键词new/delete.对于用mallo ...

  4. CPP第四版第四章:创建动态数组

    数组类型的变量有三个重要限制:         数组长度固定不变         在编译时必须知道其长度         数组只在定义它的块语句内存在     每一个程序在执行时都占用一块可用的内存空 ...

  5. 第二章 Caché JSON 创建和修改动态实体

    文章目录 第二章 Caché JSON 创建和修改动态实体 使用JSON文字构造器 使用动态表达式和点语法 使用点语法创建动态对象属性 使用点语法创建动态数组元素 使用 %Set(), %Get(), ...

  6. ca32a_demo_c++创建动态数组

    /* ca32a_demo_c++创建动态数组20200127 静态是在堆栈上创建的,动态实在堆(heap)上创建的 堆(heap)-自由存储区(free store)-内存的一个区域 c语言:mal ...

  7. C语言——动态数组的创建和使用

    C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C ...

  8. python 数组 动态赋值_动态数组在Python中的实现

    动态数组 在python中,列表,集合和字典是可变对象.数字,字符串和元组是不可变的对象.可变对象意味着我们从列表,集合或字典中添加/删除项目,但是对于不可变对象(例如元组或字符串)而言,情况并非如此 ...

  9. VBS 脚本中的字典、动态数组、队列和堆栈

    2019独角兽企业重金招聘Python工程师标准>>> 今天用VBS脚本写了几个程序,用到了字典(Dictionary).动态数组(ArrayList).队列(Queue)和堆栈(S ...

最新文章

  1. XamarinSQLite教程添加测试数据
  2. WebPart(汇总)[转载]
  3. html在线随机抽取,利用纯html+javascript实现随机抽取显示
  4. 分块矩阵在秩不等式中的应用
  5. 按钮交互loading ---- 转圈圈 加载
  6. binlog日志_mysql的binlog日志的自动定时清理
  7. hud抬头显示器哪个好_显示器TN、IPS、VA面板类型哪个好?
  8. mysql 绿色安装 ubuntu_Ubuntu免安装配置MySQL
  9. 解决WebGL加载倾斜摄影模型出现An eror occurred while rendering.Rendering has stopped.问题
  10. 有关C++11标准的一些粗浅认识
  11. 珠海空号检测的运行原理
  12. oracle修改执行计划,调整执行计划的三种方法
  13. 三角形外接球万能公式_【光速解题】如何秒定各类外接球的球心
  14. 德州停电悲剧不会重演 智慧用电是新方向
  15. “拷打”两天,扎克伯格胜利大逃亡!
  16. 万字用户画像标签体系建设分析指南!
  17. 机器学习中的数学(上)
  18. c语言编程基础之IPC共享内存
  19. 在线引流工具Tcpcopy原理、使用、采坑
  20. 数字逻辑基础:数制与码制之计数进位制

热门文章

  1. Java实现简单的在聊天面板中显示emoji
  2. Latex文本文档的排版
  3. 读EasyPR开发详解实践感想1
  4. Eratosthenes筛法求素数
  5. mysql数据倾斜_sqoop数据倾斜解决实战
  6. layui select第一次无法选中_Windows 10 无法访问共享的解决办法大全
  7. mysql in和or扫描全表_MySQL对OR条件查询不支持优化,会进行全表扫描
  8. jsp dbbean mysql_Servlet+JSP+MySQL实现用户管理模块之二、实现用户注册
  9. jQuery end()函数示例
  10. java设计模式迭代器模式_Java中的迭代器设计模式