1 C语言_二维数组动态数组分配和释放

1.1 数组指针的内存分配和释放

//方法一
char (*a)[N];//指向数组的指针
a = (char (*)[N])malloc(sizeof(char [N]) * m);  //n列m行free(a);   //方法二
char **a;
int i;
a = (char **)malloc(sizeof(char *) * m);//分配指针数组
for(i=0; i<m; i++)  a[i] = (char *)malloc(sizeof(char) * n);//分配每个指针所指向的数组  for(i=0; i<m; i++)  free(a[i]);
free(a);   //方法三
char **a;
int i;
a = (char **)malloc(sizeof(char *) * m);//分配指针数组
a[0] = (char *)malloc(sizeof(char) * m * n);//一次性分配所有空间
for(i=1; i<m; i++)  a[i] = a[i-1] + n;  free(a[0]);
free(a);

1.2 指针数组的内存分配和释放

//方法一
char* a[M];//指针的数组
int i;
for(i=0; i<M; i++)  a[i] = (char *)malloc(sizeof(char) * n);  for(i=0; i<M; i++)  free(a[i]);   //方法二
char* a[M];//指针的数组
int i;
a[0] = (char *)malloc(sizeof(char) * M * n);
for(i=1; i<M; i++)  a[i] = a[i-1] + n;  free(a[0]);

2 C++_二维数组动态数组分配和释放

2.1 数组指针的内存分配和释放

//方法一
char (*a)[N];//指向数组的指针
a = new char[m][N];  delete[] a;   //方法二
char **a;
a = new char* [m];//分配指针数组
for(int i=0; i<m; i++)  a[i] = new char[n];//分配每个指针所指向的数组  for(i=0; i<m; i++)  delete[] a[i];
delete[] a;

2.2 指针数组的内存分配和释放

//方法一
char **a;
a = new char* [m];
a[0] = new char[m * n];//一次性分配所有空间
for(int i=1; i<m; i++)  a[i] = a[i-1] + n;//分配每个指针所指向的数组  delete[] a[0];
delete[] a;   //方法二
char* a[M];//指针的数组
for(int i=0; i<M; i++)  a[i] = new char[n];  for(i=0; i<M; i++)  delete[] a[i];   //方法三
char* a[M];//指针的数组
a[0] = new char[M*n];
for(int i=1; i<M; i++)  a[i] = a[i-1] + n;  delete[] a[0];

注意: newdelete要注意配对使用,即有多少个new就有多少个delete,这样才可以避免内存泄漏!


以上内容来自:

  • A_zhu_C/C++动态二维数组的内存分配和释放
  • 原博客地址:http://blog.csdn.net/huazhigang/article/details/11745551(已删除)

C++/C--动态二维数组的内存分配与释放【转载】相关推荐

  1. C/C++动态二维数组的内存分配和释放

    C语言: 1 //二维数组动态数组分配和释放 2 //数组指针的内存分配和释放 3 //方法一 4 char (*a)[N];//指向数组的指针 5 a = (char (*)[N])malloc(s ...

  2. C语言中多维数组的内存分配和释放(malloc与free)(转)

    C语言中多维数组的内存分配和释放(malloc与free)(转) 写代码的时候会碰到多维数组的内存分配和释放问题,在分配和释放过程中很容易出现错误.下面贴上一些示例代码,以供参考. 如果要给二维数组( ...

  3. 二维动态数组空间分配 c语言,科学网—C语言中动态二维数组的使用和分配 - 王一哲的博文...

    好多年不用C语言了,最后一次使用还是读研的时候写矩量法的时候了,看见VS的界面总能想起当年读书的时候的各种错误,往事随风.本程序应人之约,首先得到一个随机的矩阵,之后通过将矩阵分解为几个小矩阵统计小矩 ...

  4. C++——C++创建动态二维数组+memset()函数初始化

    C++开辟动态二维数组的几种方法总结 原文链接:https://blog.csdn.net/xiang_shao344/article/details/99684395 一.用 new 来动态开辟一个 ...

  5. c语言二维数组存储坐标,C语言的二维数组在内存中的存放顺序

    C语言的二维数组在内存中的存放顺序 发布时间:2020-06-28 18:23:49 来源:亿速云 阅读:708 作者:Leah 这期内容当中小编将会给大家带来有关C语言的二维数组在内存中的存放顺序, ...

  6. C++动态二维数组演示的代码

    将代码过程中经常用到的代码珍藏起来,下边资料是关于C++动态二维数组演示的代码. #include <iostream> #include <string>using name ...

  7. C++建立动态二维数组

    C++建立动态二维数组主要有两种方法: 1.使用数组指针,分配一个指针数组,将其首地址保存在b中,然后再为指针数组的每个元素分配一个数组            int **b=new int*[row ...

  8. 动态二维数组赋值及for循环遍历和toString遍历

    package com.Summer_0421.cn;import java.util.Arrays;/*** @author Summer* 动态二维数组赋值及for循环遍历和toString遍历* ...

  9. 二维数组动态分配内存

    二维数组动态分配内存 C 二维数组动态分配和释放 (1)已知第二维 Code-1 char (*a)[N];//指向数组的指针 a = (char (*)[N])malloc(sizeof(char ...

最新文章

  1. iis 站点中文乱码 解决方案
  2. 【转】采购订单长文本增强
  3. c++ 随机字符串_关于Python的随机数模块,你必须要掌握!
  4. PHP读取TXT中文乱码的解决方法
  5. 怎样将Datatable中的数据直接导入到Excel模板上
  6. c++ 读取hdmi输入信号_小白需要知道HDMI知识
  7. 第 11 章 日志管理 - 090 - ELK 完整部署和使用
  8. 【混凝土强度预测】基于matlab BP神经网络混凝土强度预测【含Matlab源码 695期】
  9. 手柄xinput模式_让你的普通手柄变成360手柄(XInputEmulator)下载_让你的普通手柄变成360手柄(XInputEmulator)官方下载-太平洋下载中心...
  10. 从零开始的FPGA学习5-同步复位D触发器、异步复位D触发器
  11. sublime报错信息乱码_Sublime如何解决中文乱码问题
  12. html5的header元素作用,html5header标签怎么用?html5header标签的作用介绍-
  13. c语言中int转string,C++中int型与string型互相转换
  14. java 仿易企秀_鲁班H5(开源可视化搭建系统, 可以理解为开源版本易企秀)核心实现原理解析...
  15. Android 开源组件和第三方库汇总
  16. 网页图片加载优化方法总结
  17. 钱钟书是怎样做读书笔记的
  18. 什么是.vue文件,它的作用是什么
  19. Android开发:BaseExpandableListAdapter的使用
  20. 戴尔笔记本设置U盘或者光盘启动

热门文章

  1. TDengine在数控机床监控中的应用
  2. Docker-Compose快速搭建Oracle-11G系统
  3. 消息队列面试 - 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?
  4. BGP——本地始发选路+AS-PATH选路(讲解+命令)
  5. 如何持之以恒做好一件事?
  6. 前端使用js发起http请求的几种方法
  7. node和npm是什么_什么是npm? 面向初学者的Node Package Manager教程
  8. 如果成为一名高级安卓开发_想成为一名开发人员? 这是您需要考虑的。
  9. vscode设置go-lint警告提示
  10. golang.org/x/lint安装失败