在C++编程中,使用new创建数组然后用delete来释放。

一、创建并释放一维数组

#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
//分配动态一维数组
int *arr=new int[n]; for(int i=;i<n;i++)
cin>>arr[i];
for(int i=;i<n;i++)
cout<<arr[i]<<" ";
//释放arr数组
delete[] arr;
return ;
}

注意:delete后面的[]不能少。

二、创建并释放二维数组

#include<iostream>
using namespace std;
int main()
{
int row,col;
cin>>row>>col;
//为行指针分配空间
int **arr=new int *[row];
for(int i=;i<row;i++)
arr[i]= new int[col];//为每行分配空间(每行中有col个元素)
//输入二维数组的数
for(int i=;i<row;i++)
for(int j=;j<col;j++)
cin>>arr[i][j];
cout<<"*******************"<<endl;
//输出二维数组中的数
for(int i=;i<row;i++)
{
for(int j=;j<col;j++)
cout<<arr[i][j]<<" ";
cout<<endl;
}
//释放二维数组(反过来)
for(int i=;i<row;i++)
delete[] arr[i];
delete[] arr;
return ;
}

三、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. new和delete创建和释放动态数组

    1.动态创建和释放一维数组 #include<iostream> using namespace std; int main() { int n; cin>>n; //分配动态 ...

  2. C/C++ new/delete []、内存泄漏、动态数组

    一.概念 new/delete是用于动态分配和撤销内存的运算符.new/delete是c++里才有的,c中是用malloc和free,c++虽然也可以用,但是不建议用.当我们使用关键字new在堆上动态 ...

  3. c++创建二维动态数组与内存释放

    如下: #include <iostream> #include <windows.h> using namespace std; int main() { cout < ...

  4. C++中对C的扩展学习新增语法——动态内存管理

    1.C语言动态内存管理的缺点: 1.malloc对象的大小需要自己计算. 2.需要手动转换指针类型. 3.C++的对象不适合使用malloc和free. 2.C++中new/delete基本使用: 3 ...

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

    今天用VBS脚本写了几个程序,用到了字典(Dictionary).动态数组(ArrayList).队列(Queue)和堆栈(Stack).现在写篇Blog总结一下 :-) 1.编写环境 今天突发奇想下 ...

  6. 数据库设计中的Soft Delete模式

    最近几天有点忙,所以我们今天来一篇短的,简单地介绍一下数据库设计中的一种模式——Soft Delete. 可以说,该模式毁誉参半,甚至有非常多的人认为该模式是一个Anti-Pattern.因此在本篇文 ...

  7. 浅谈 C++ 中的 new/delete 和 new[]/delete[]

    在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢? new 和 delete 是函数吗? new [] 和 delete [] 又是什么?什么时候 ...

  8. 【转】浅谈 C++ 中的 new/delete 和 new[]/delete[]

    在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢? new 和 delete 是函数吗? new [] 和 delete [] 又是什么?什么时候 ...

  9. C++中的new/delete与operator new/operator delete

    new operator/delete operator就是new和delete操作符,而operator new/operator delete是函数. new operator(1)调用opera ...

随机推荐

  1. 改变对update的做法

    以前都是 先根据id或者其他条件查出来  再根据查出来的结果 进行修改  再update提交 这里可以改所有的字段 现在是做法 是直接new 一个 Do或者Vo  把要改变的值 先填充进去  然后再去 ...

  2. C++Primer 第十二章

    //1.标准库提供了两种智能指针类型来管理动态对象,均定义在头文件memory中,声明在std命名空间. // shared_ptr:允许多个指针指向同一个对象. // unique_ptr:独占所指 ...

  3. 锋利的jQuery

    今天总要找点东西学习,其实有很多东西要记录,慢慢写,今天看书吧,这几天把这本书看完,这里记一些要点 从头开始记吧 第一章 认识jQuery $就是jQuery的简写 $(function(){}) 就 ...

  4. 开篇呀,恭喜恭喜,是个好开头-----关于sort()排序

    感觉自己活了半辈子从来没写过博客,这可是头一回,而且不是记事是为了学习,先恭喜恭喜自己,有一个很好的开端,不管能不能半途而废,反正是想着为了学习做点什么. 之前有很多东西需要搬过来,循序渐进吧,反正也 ...

  5. SQL 数据库 函数

    1.数学函数:操作一个数据,返回一个结果 --取上限ceiling select code,name,ceiling(price) from car ; --取下限 floor select floo ...

  6. Python学习总结9:目录操作方法汇总

    os.getcwd():得到当前工作目录,即当前Python脚本工作的目录路径os.listdir():返回指定目录下的所有文件和目录名os.remove():函数用来删除一个文件os.removed ...

  7. php使用过滤器filter_var轻松验证邮箱url和ip地址等

    以前使用php的时候还不知道有过滤器filter这玩意,那时候判断邮箱.url和ip地址格式是否符合都是用正则表达式.后来随着使用的逐渐深入,才知道在php中也可以使用内置的函数库过滤器filter来 ...

  8. $.trim()函数

    $.trim(str) 返回:string: 参数str :String类型,需要去除两端空白字符的字符串.如果参数str不是字符串类型,该函数将自动将其转为字符串(一般调用其toString()方法 ...

  9. Couchbase

    Couchbase介绍,更好的Cache系统 在移动互联网时代,我们面对的是更多的客户端,更低的请求延迟,这当然需要对数据做大量的 Cache 以提高读写速度. 术语 节点:指集群里的一台服务器. 现 ...

  10. uploadify3.2.1加载时,报NetworkError 404 Not Found或NetworkError forbidden错误

    我用的uploadify的版本是3.2.1 在打开配置了uploadify的页面的时候,什么操作都没有,仅仅是打开了页面,在火狐里可以看到一行报错信息,我的uploadify页面 在"/项目 ...