博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组内存的释放与申请
阅读量:4958 次
发布时间:2019-06-12

本文共 2359 字,大约阅读时间需要 7 分钟。

参考链接:https://www.cnblogs.com/usec/p/7413829.html

使用二维数组的时候,有时候事先并不知道数组的大小,因此就需要动态的申请内存。常见的申请内存的方法有两种: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 = 0; i < m; i++)        cin >> p[i];    cout << "data is :";    for (i = 0; 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 = 0; i < m; i++)    {        *(p + i) = (int*)malloc(sizeof(int)*n);//开辟列      }    //输入数据      printf("please input data:");    for (i = 0; i < m; i++)        for (j = 0; j < n; j++)            cin >> p[i][j];    //输出数据      for (i = 0; i < m; i++)    {        for (j = 0; j < n; j++)        {            cout << p[i][j];        }        cout << endl;    }    //释放开辟的二维空间      for (i = 0; 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 = 0; i < len; i++)        cin >> p[i];    cout << "data is " << endl;    for (i = 0; i < len; i++)        cout <
<< 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 = 0; i < m; i++)        p[i] = new int[n]; //开辟列      cout << "input data: ";    for (i = 0; i < m; i++)        for (int j = 0; j < n; j++)            cin >> p[i][j];    cout << "output: " << endl;    for (i = 0; i < m; i++)    {        for (int j = 0; j < n; j++)            cout <<  p[i][j]<<" ";        cout << endl;    }    //释放开辟的资源      for (i = 0; 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));

转载于:https://www.cnblogs.com/clarencezzh/p/11356149.html

你可能感兴趣的文章
OSI七层协议
查看>>
Linux 空闲空间的格式化与加载
查看>>
Linux 终端 Bash 常用快捷键介绍及经验
查看>>
关于twitter的GIF变mp4的测试
查看>>
Android中通过typeface设置字体
查看>>
android 优秀框架整理
查看>>
java线程中的interrupt,isInterrupt,interrupted方法
查看>>
where can I find source of com.android.internal.R.styleable.AlertDialog_multiChoiceItemLayout?
查看>>
ViewDragHelper详解
查看>>
Akka(43): Http:SSE-Server Sent Event - 服务端主推消息
查看>>
Developing for nRF52810(转载)
查看>>
java netty nio
查看>>
115 不同的路径Ⅱ
查看>>
POJ2104 K-th Number 主席树
查看>>
【转】Spring学习---为什么要用spring,springMVC
查看>>
idea激活
查看>>
wmi文章地址
查看>>
盒子的偏移量
查看>>
Spring3系列12- Spring AOP AspectJ
查看>>
JAVA异常与异常处理详解
查看>>