二维数组动态生成与释放(c/c++)

原创 2008年10月03日 23:35:00
熟悉下new,delete, malloc, free。
不过好像混用也可以
  1. #include <stdlib.h>
  2. #include <assert.h>
  3. #include <iostream>
  4. using namespace std;
  5. template<class T>
  6. bool Make2DArray(T** &x, int rows, int cols)
  7. {
  8.     try{
  9.         x = new T*[rows];
  10.         for (int i=0; i<rows; i++)
  11.             x[i] = new T[cols];
  12.         return true;
  13.     }catch(...)
  14.     {
  15.         cerr<<"new error!"<<endl;
  16.         return false;
  17.     }
  18. }
  19. template<class T>
  20. void Delete2DArray(T **&x, int rows)
  21. {
  22.     for (int i=0; i<rows; i++)
  23.     {
  24.         delete[] x[i];
  25.     }
  26.     delete[] x; 
  27.     x = NULL;
  28. }
  29. bool Make(char **&x, int rows, int cols)
  30. {
  31.     int i;
  32.     x = (char **)malloc(sizeof(char *)*rows);
  33.     assert(x != NULL);
  34.     for (i=0; i<cols; i++)
  35.     {
  36.         x[i] = (char *)malloc(sizeof(char)*cols);
  37.         assert(x[i]);
  38.     }
  39.     return true;
  40. }
  41. void free2D(char **&p, int rows)
  42. {
  43.     int i;
  44.     for (i=0; i<rows; i++)
  45.     {
  46.         free(p[i]);
  47.         p[i] = NULL;
  48.     }
  49.     free(p);
  50.     p = NULL;
  51. }

二维数组动态分配和释放(c/c++)

(1)已知第二维 Code-1 char (*a)[N];//指向数组的指针 a = (char (*)[N])malloc(sizeof(char *) *m); printf("%d\n"...
  • jiayichendddd
  • jiayichendddd
  • 2013年04月19日 04:14
  • 1082

C++中动态申请二维数组并释放方法

C/C++中动态开辟一维、二维数组是非常常用的,以前没记住,做题时怎么也想不起来,现在好好整理一下。  C++中有三种方法来动态申请多维数组   (1)C中的malloc/free   (2)C...
  • u012027907
  • u012027907
  • 2013年11月17日 17:00
  • 21036

C++ 二维数组动态创建和内存释放

最近做个C++实验用到了二维数组,现在做下笔记, 创建动态二维数组: // 动态创建二维数组array[row][column] int **array; array = new i...
  • u010962810
  • u010962810
  • 2013年12月18日 18:09
  • 2422

C++编程笔记:二维数组的动态分配与释放

当给定的条件不同时,二维数组的动态分配方式不同。例如,已知二维数组的行数(即第一维维度)为多少的情况下对其进行动态分配,与知道列数(第二维维度),或者两个维度都未知的情况下,二维数组的动态分配方式都不...
  • elaine_bao
  • elaine_bao
  • 2016年08月26日 22:20
  • 1793

C++数组(一维、二维、三维)的动态分配new、初始化memset和释放delete

【原文】http://blog.csdn.net/shanzhizi/article/details/7835752 一维数组
  • u012234115
  • u012234115
  • 2014年07月03日 19:07
  • 10667

C/C++上二维数组的两种动态分配内存方法

最近在看一个程序的源代码的时候了解到了二维数组的动态分配空间以及释放的方法,在此记录。 一、二维数据的内存空间动态分配 二、二维数据的内存空间释放 三、完整代码...
  • lavorange
  • lavorange
  • 2015年01月20日 16:54
  • 13274

C/C++二维数组名和二级指针

二维数组名不能赋值给二级指针,否则运行中可能会出现错误。
  • wu_nan_nan
  • wu_nan_nan
  • 2016年06月23日 11:53
  • 6088

delete与delete[]区别及二维数组申请注意点

在对栈空间的操作时,C++常使用new与delete来进行。 对于此操作符,有int *p = new int;                                       Int...
  • promotercx
  • promotercx
  • 2012年05月14日 13:18
  • 5281

C++中为二维数组开辟空间,并释放空间

c++中为二维数组开辟空间,并释放空间
  • feilong1lantern
  • feilong1lantern
  • 2015年12月12日 22:20
  • 1004

C/C++中二维数组和指针关系分析

在C/c++中,数组和指针有着密切的关系,有很多地方说数组就是指针式错误的一种说法。这两者是不同的数据结构。其实,在C/c++中没有所谓的二维数组,书面表达就是数组的数组。我猜想是为了表述方便才叫它二...
  • zhouxuguang236
  • zhouxuguang236
  • 2013年10月03日 18:02
  • 38590
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二维数组动态生成与释放(c/c++)
举报原因:
原因补充:

(最多只允许输入30个字)