使用二维数组的时候,有时候事先并不知道数组的大小,因此就需要动态的申请内存。常见的申请内存的方法有两种:malloc/free 和 new/delete。

一、malloc/free

(1)申请一维数组

void dynamicCreate1Array()
{
int m;
int i;
int *p; cout<<("please input the length of data:");
cin >> m; p = (int*)malloc(sizeof(int)*m);//动态开辟 cout << "please input data" << endl;
for (i = ; i < m; i++)
cin >> p[i]; cout << "data is :";
for (i = ; i < m; i++)
cout << p[i] << endl;
free(p);
}

(2)申请二维数组

void dynamicCreate2Array()
{
int m, n;
int i, j;
int **p; printf("please input the row and col:");
cin >> m >> n;
//scanf("%d%d", &m, &n); p = (int**)malloc(sizeof(int*)*m); //开辟行 for (i = ; i < m; i++)
{
*(p + i) = (int*)malloc(sizeof(int)*n);//开辟列
}
//输入数据
printf("please input data:");
for (i = ; i < m; i++)
for (j = ; j < n; j++)
cin >> p[i][j];
//输出数据
for (i = ; i < m; i++)
{
for (j = ; j < n; j++)
{
cout << p[i][j];
}
cout << endl;
}
//释放开辟的二维空间
for (i = ; i < m; i++)
free(*(p + i));
}

二、new/delete

(1)申请一维数组

void DynamicCreate1Array()
{
int len;
int i; cout << "please input the length of data: ";
cin >> len; int *p = new int[len]; cout << "please input data: ";
for (int i = ; i < len; i++)
cin >> p[i]; cout << "data is " << endl;
for (i = ; i < len; i++)
cout <<p[i] << endl; delete[] p;
}

(2)申请二维数组

void DynamicCreate2Array()
{
int m, n;
int i;
cout << "input row and col: ";
cin >> m >> n; //动态开辟空间
int **p = new int*[m]; //开辟行
for (int i = ; i < m; i++)
p[i] = new int[n]; //开辟列 cout << "input data: ";
for (i = ; i < m; i++)
for (int j = ; j < n; j++)
cin >> p[i][j]; cout << "output: " << endl;
for (i = ; i < m; i++)
{
for (int j = ; j < n; j++)
cout << p[i][j]<<" ";
cout << endl;
} //释放开辟的资源
for (i = ; i < m; i++)
delete[] p[i];
delete[] p; }

注:另一种方法:

row:行

col:列

unsigned int **ppPathes;

*ppPathes = (unsigned int *)calloc(row * col, sizeof(unsigned int));

使用malloc:

*ppPathes = (unsigned int *)malloc(sizeof(unsigned int )*(PathNumTemp) * (pathLenTemp + 1));

C++基础:二维数组动态的申请内存和释放内存的更多相关文章

  1. C++二维数组动态申请内存

    好久没用C++刷题了,今天早上刷了几条题,感觉很陌生了.怪我,大二下实在太颓废了,没啥作为. 今天更新个关于c++二维数组内存申请的问题,当初作为菜鸟初学指针的时候,还是在这方面有点搞不通的.今天用到 ...

  2. C Program进阶-二维数组动态内存开辟

    对于二维数组,我们知道可以用Type ArrayName[Row][Colume]的方式来定义,这是一种静态内存开辟的方式,程序在编译的时候就为该数组分配了空间,而且行和列大小也是指定的.这篇文章里我 ...

  3. C语言 二维数组(指针)动态分配和释放(转)

    C 二维数组(指针)动态分配和释放 先明确下概念: 所谓32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据.如果我们将总长128位的指令分别按 ...

  4. C++二维数组动态内存分配

    对于二维数组和二维指针的内存的分配 这里首选说一下一维指针和一维数组的内存分配情况. 一维: 数组:形如int  a[5];这里定义了一个一维数组a,并且数组的元素个数是5,这里的a是这五个元素的整体 ...

  5. C语言基础--二维数组

    二维数组概念: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组,二维数组是特殊的一维数组. 二维数组格式: 元素类型 数组名称[一维数组的个数][每个一维数组的元素个数]; 元素类型 ...

  6. c指针与数组,传参问题,指针数组与数组指针的区别,二维数组动态内存分配

    一 数组的结构:顺序存储,看谭浩强中的图,牢记 1.数组名指代一种数据结构:数组 现在可以解释为什么第1个程序第6行的输出为10的问题,根据结论1,数组名str的内涵为一种数据结构,即一个长度为10的 ...

  7. Java基础--二维数组

    1.二维数组的定义 二维数组表示行列二维结构,在栈空间中的二维数组的地址指向堆空间中的一维数组,堆空间中的一维数组的地址又指向一维数组所在的内存空间. 2.二维数组的声明 二维数组声明有3种方式,推荐 ...

  8. C语言基础:二维数组 分类: iOS学习 c语言基础 2015-06-10 21:42 16人阅读 评论(0) 收藏

    二维数组和一位数组类似. 定义: 数据类型 数组名[行][列]={{ },{ }....}; 定义时,一维(行)的长度可以省略,但是二维(列)的长度不可以省略.但是访问时,一定使用双下标. 二维数组的 ...

  9. C Program基础-二维数组

    一维数组可以看作一行连续的数据,只有一个下标.C语言允许构造二维数组甚至多维数组,在实际问题中有时候常常需要用到二维数组(例如数学上的矩阵),二维数组有两个下标,以确定某个元素在数组中的位置. (一) ...

随机推荐

  1. HTML基础知识(未完待续)

    一.HTML编辑工具:Sublime Text 二.HTML实体字符:1.( 空格):&nbsp: 2.(<) &lt: 3.(>)&gt: 4.(&)&a ...

  2. POJ3268 Silver Cow Party Dijkstra最短路

    Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to atten ...

  3. 怎么把系统装进u盘(ultraiso)

    ​首先要下载一个叫ultraiso的软件.可以在百度中搜索此软件下载.下载后安装,安装后打开软件,如图所示.        ​点击左上角的文件选项,在弹出的菜单中,点击打开选项,打开一个你要装进U盘的 ...

  4. PocScan的搭建与使用

    安装Docker, 然后下载镜像 $ sudo curl -sSL https://get.daocloud.io/docker | sh $ sudo systemctl start docker ...

  5. OpenCV探索之路(二十二):制作一个类“全能扫描王”的简易扫描软件

    相信很多人手机里都装了个"扫描全能王"APP,平时可以用它来可以扫描一些证件.文本,确实很好用,第一次用的时候确实感觉功能很强大啊算法很牛逼啊.但是仔细一想,其实这些实现起来也是很 ...

  6. Python web框架总结

    web框架总结 前提 一个web框架需要包含的组件或者功能有: router orm request and response cookies and session template engine ...

  7. 初学IOS之TableView

    PS:tableview作为IOS的UI界面的重点,今天我只学习一部分,在下文列出. 下文我以创建省份为例子,用纯代码的方式创建,但是并不是最优代码,仅作熟悉tableview的创建使用. ----- ...

  8. winform 自定义控件的使用

    c#的自定义控件还是很方便的,至少相对于c++而言. 1,当然是建立一个windows 窗体空间库,我这里就是用vs 2015 ,工程名MyControl 第二步.在自定义空间窗体内,拖放这样一组空间 ...

  9. MATLAB垂直搜索图片中的白段

    function [ top, bottom, middle, len ] = classify_by_vertical_white_belt( img ) % 垂直搜索图片中的白段, 记录具体信息. ...

  10. 移动端 canvas插入多张图片生成一张可保存到手机图片

    第一次写随笔,想把开发中遇到的问题与大家分享,可能会让您少走一步弯路. 先看下效果图: 代码分三部分为大家展示: 1.html 部分 <div id="myQrcontainer&qu ...