C语言:
1 //二维数组动态数组分配和释放
//数组指针的内存分配和释放
//方法一
char (*a)[N];//指向数组的指针
a = (char (*)[N])malloc(sizeof(char [N]) * m); free(a); //方法二
char **a;
int i;
a = (char **)malloc(sizeof(char *) * m);//分配指针数组
for(i=; i<m; i++)
a[i] = (char *)malloc(sizeof(char) * n);//分配每个指针所指向的数组 for(i=; i<m; i++)
free(a[i]);
free(a); //方法三
char **a;
int i;
a = (char **)malloc(sizeof(char *) * m);//分配指针数组
a[] = (char *)malloc(sizeof(char) * m * n);//一次性分配所有空间
for(i=; i<m; i++)
a[i] = a[i-] + n; free(a[]);
free(a); //指针数组的内存分配和释放
//方法一
char* a[M];//指针的数组
int i;
for(i=; i<M; i++)
a[i] = (char *)malloc(sizeof(char) * n); for(i=; i<M; i++)
free(a[i]); //方法二
char* a[M];//指针的数组
int i;
a[] = (char *)malloc(sizeof(char) * M * n);
for(i=; i<M; i++)
a[i] = a[i-] + n; free(a[]);
C++:
1 //二维数组动态数组分配和释放
//数组指针的内存分配和释放
//方法一
char (*a)[N];//指向数组的指针
a = new char[m][N]; delete[] a; //方法二
char **a;
a = new char* [m];//分配指针数组
for(int i=; i<m; i++)
a[i] = new char[n];//分配每个指针所指向的数组 for(i=; i<m; i++)
delete[] a[i];
delete[] a; //指针数组的内存分配和释放
//方法一
char **a;
a = new char* [m];
a[] = new char[m * n];//一次性分配所有空间
for(int i=; i<m; i++)
a[i] = a[i-] + n;//分配每个指针所指向的数组 delete[] a[];
delete[] a; //方法二
char* a[M];//指针的数组
for(int i=; i<M; i++)
a[i] = new char[n]; for(i=; i<M; i++)
delete[] a[i]; //方法三
char* a[M];//指针的数组
a[] = new char[M*n];
for(int i=; i<M; i++)
a[i] = a[i-] + n; delete[] a[];

注意:

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

C/C++动态二维数组的内存分配和释放的更多相关文章

  1. 以杨辉三角为例,从内存角度简单分析C语言中的动态二维数组

    学C语言,一定绕不过指针这一大难关,而指针最让人头疼的就是各种指向关系,一阶的指针还比较容易掌握,但一旦阶数一高,就很容易理不清楚其中的指向关系,现在我将通过杨辉三角为例,我会用四种方法从内存的角度简 ...

  2. C++动态二维数组的创建

    两种方式. 一,二级指针,创建2行3列的动态二维数组. 这里,p指向的是2个地址,这两个地址各指向长度为3的一维整型数组. 在内存中,每行元素内部顺序排列.两行元素的首地址不同,p[1]与p[2]存放 ...

  3. C语言批量数据到动态二维数组

    上一篇文章将文件读取放到静态创建的二维数组中,可是结合网络上感觉到今天的DT时代,这样批量大量读取一个上百行的数据,分配的内存是否可能由于大量的数据而产生溢出呢,近期一直研究里malloc函数.通过它 ...

  4. C++ 里 构建动态二维数组

    //****动态二维数组 /* int m=3; int **data; int n=2; data=new int*[m]; for(int j=0;j<m;j++) { data[j]=ne ...

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

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

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

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

  7. 【C/C++】vector 动态二维数组

    声明 vector<vector<int> vec; //赋值思路可以从这个很基础的操作里看出来 vector<int> a; a.push_back(1); a.pus ...

  8. C++ 用 new 生成一个动态二维数组

    //Microsoft Visual Studio 2015 Enterprise //变长二维数组 #include <iostream> #include<iomanip> ...

  9. C#动态二维数组输出

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

随机推荐

  1. Spring容器的理解

    控制反转(IOC,Inversion Of Contorl)和依赖注入(DI,Dependency Injection) IOC是一个宽泛的概念:对某事物的控制权由A转移到B. DI是实现IOC的一种 ...

  2. 记我的小网站发现的Bug之一 —— 某用户签到了两次

    1.故事背景 今天上午我忙完手中的事情之后突然想起来我还没签到,于是赶紧打开签到页面,刚点击了签到按钮,提示"签到成功,获得25阅读额度!",正准备退出浏览器,忽然发现签到列表有异 ...

  3. teatime、

    Python之路,Day7 - 面向对象编程进阶   本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个 ...

  4. 剑指Offer(书):链表的倒数第K个节点

    题目:输入一个链表,输出该链表中倒数第k个结点. 分析:要注意三点:链表为空:链表个数小于k:k的值<=0; public ListNode FindKthToTail(ListNode hea ...

  5. POJ 1849 树的直径 Two

    如果一个点开始遍历一棵树再回到原点那么每条边走两次. 现在是两个人从同一点出发,那么最后遍历完以后两人离得越远越好. 最后两人所处位置的路径上的边走了一次,其他边走了两次. 要使总路程最小,两人最后停 ...

  6. Android AAR 混淆的坑

    一定不要忘记加上这段 -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,A ...

  7. 深入java集合系列

    http://www.cnblogs.com/ITtangtang/p/3948765.html 写的很赞 需要时常复习.

  8. 【12】link与@import的区别

    [12]link与@import的区别 link是HTML方式, @import是CSS方式 link最大限度支持并行下载,@import过多嵌套导致串行下载,出现FOUC link可以通过rel=& ...

  9. IOS 自动布局-UIStackPanel和UIGridPanel(三)

    在这一篇了我将继续讲解UIGridPanel. 在iphone的app里面可以经常看到一些九宫格布局的应用,做过html开发的对这类布局应该是很熟悉的.在IOS中要实现这样的布局方法还是蛮多的,但是我 ...

  10. (绝对有用)iOS获取UUID,并使用keychain存储

    原文链接 http://blog.sina.com.cn/s/blog_5971cdd00102vqgy.html UDID被弃用,使用UUID来作为设备的唯一标识.获取到UUID后,如果用NSUse ...