C/C++动态二维数组的内存分配和释放
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++动态二维数组的内存分配和释放的更多相关文章
- 以杨辉三角为例,从内存角度简单分析C语言中的动态二维数组
学C语言,一定绕不过指针这一大难关,而指针最让人头疼的就是各种指向关系,一阶的指针还比较容易掌握,但一旦阶数一高,就很容易理不清楚其中的指向关系,现在我将通过杨辉三角为例,我会用四种方法从内存的角度简 ...
- C++动态二维数组的创建
两种方式. 一,二级指针,创建2行3列的动态二维数组. 这里,p指向的是2个地址,这两个地址各指向长度为3的一维整型数组. 在内存中,每行元素内部顺序排列.两行元素的首地址不同,p[1]与p[2]存放 ...
- C语言批量数据到动态二维数组
上一篇文章将文件读取放到静态创建的二维数组中,可是结合网络上感觉到今天的DT时代,这样批量大量读取一个上百行的数据,分配的内存是否可能由于大量的数据而产生溢出呢,近期一直研究里malloc函数.通过它 ...
- C++ 里 构建动态二维数组
//****动态二维数组 /* int m=3; int **data; int n=2; data=new int*[m]; for(int j=0;j<m;j++) { data[j]=ne ...
- C++建立动态二维数组
C++建立动态二维数组主要有两种方法: 1.使用数组指针,分配一个指针数组,将其首地址保存在b中,然后再为指针数组的每个元素分配一个数组 int * ...
- 动态二维数组赋值及for循环遍历和toString遍历
package com.Summer_0421.cn; import java.util.Arrays; /** * @author Summer * 动态二维数组赋值及for循环遍历和toStrin ...
- 【C/C++】vector 动态二维数组
声明 vector<vector<int> vec; //赋值思路可以从这个很基础的操作里看出来 vector<int> a; a.push_back(1); a.pus ...
- C++ 用 new 生成一个动态二维数组
//Microsoft Visual Studio 2015 Enterprise //变长二维数组 #include <iostream> #include<iomanip> ...
- C#动态二维数组输出
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
随机推荐
- pssh批量管理服务器
pssh命令是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的,类似pdsh,个人认为相对pdsh更为简便,使用必须在各个服务器上配置好密钥认证访问. 1. ...
- simulation clock gen unit (推荐)
//Normal Clock Block always begin:clk_blk clk <=; # clk<=; #; end //Improved Clock Block, impr ...
- python爬虫(爬取视频)
爬虫爬视频 爬取步骤 第一步:获取视频所在的网页 第二步:F12中找到视频真正所在的链接 第三步:获取链接并转换成机械语言 第四部:保存 保存步骤代码 import re import request ...
- 初识Pyhon之准备环境
安装成功python的运行环境之后,你可能要迫不及待大展身手了 如果你有一定的语言基础,那么基础这一块儿就可以简单的看看就可以了,但是你是一个编程语言的初学者.不着急,慢慢往下看 打开pycharm创 ...
- centos 7.3 快速安装ceph
Ceph的部署手册(Centos7.3) Ceph简介 Ceph是一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统. 部署逻辑架构 准备3台主机,并且修改主机名(hostnam ...
- (转)iOS开发之Pch预编译文件的创建
本文转自 http://www.cnblogs.com/496668219long/p/4568265.html 在Xcode6之前,创建一个新工程xcode会在Supporting files文件夹 ...
- SpringBoot 多线程
Spring通过任务执行器(TaskExecutor)来实现多线程和并发编程.使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor.而实际开发中任务一般是非阻 ...
- 关于priority_queue的一些说明
参考GGBeng 相关定义 优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素.但是它有一个特性,就是队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大 ...
- sqlserver查看死锁进程工具脚本p_lockinfo
/* -- 处理死锁 -- 查看当前进程,或死锁进程,并能自动杀掉死进程 -- 因为是针对死的,所以如果有死锁进程,只能查看死锁进程 -- 当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程 ...
- TOJ 5021: Exchange Puzzle
5021: Exchange Puzzle Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByteTotal Submit ...