`
- 浏览:
1830 次
-
C语言
[cpp] view plaincopy
//二维数组动态数组分配和释放
//数组指针的内存分配和释放
//方法一
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=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);
//指针数组的内存分配和释放
//方法一
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]);
C++
[cpp] view plaincopy
//二维数组动态数组分配和释放
//数组指针的内存分配和释放
//方法一
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;
//指针数组的内存分配和释放
//方法一
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];
注意:
new和delete要注意配对使用,即有多少个new就有多少个delete,这样才可以避免内存泄漏!
来源:
http://blog.csdn.net/huazhigang/article/details/11745551
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
def是一个二级指针,它指向的是一个一维数组的指针,数组的元素都是float. (2)double*(*gh)[10]; gh是一个指针,它指向一个一维数组,数组元素都是double*. (3)double(*f[10])(); f是一个数组,f有10个元素,元素都是...
7.2 二维数组的定义和引用 86 7.2.1 二维数组的定义 86 7.2.2 二维数组元素的引用 86 7.2.3 二维数组的初始化 87 7.2.4 二维数组程序举例 89 7.3 字符数组 89 7.3.1 字符数组的定义 89 7.3.2 字符数组的初始化 89 ...
7.2 二维数组的定义和引用 86 7.2.1 二维数组的定义 86 7.2.2 二维数组元素的引用 86 7.2.3 二维数组的初始化 87 7.2.4 二维数组程序举例 89 7.3 字符数组 89 7.3.1 字符数组的定义 89 7.3.2 字符数组的初始化 89 ...
大家好!现在我们将要开始一个穿越“数据...• 一维和二维数组的动态分配与释放。 • 求解二次方程。 • 生成n 个元素的所有排列方式。 • 寻找n个元素中的最大值。 此外,本章还给出了如何测试和调试程序的一些技巧。
第1章 C + +程序设计 ...• 一维和二维数组的动态分配与释放。 • 求解二次方程。 • 生成n 个元素的所有排列方式。 • 寻找n个元素中的最大值。 此外,本章还给出了如何测试和调试程序的一些技巧。
6.18 当我向一个接受指针的指针的函数传入二维数组的时候,编译器报错了。 6.19 我怎样编写接受编译时宽度未知的二维数组的函数? 6.20 我怎样在函数参数传递时混用静态和动态多维数组? 数组的大小 6.21 当...
书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面的主题,并分别给出了解答,而且结合代码示例阐明要点。 《你必须知道的495个C语言问题》结构...
o 7.15 当我向一个接受指针的指针的函数传入二维数组的时候, 编译器报错了。 o 7.16 我怎样编写接受编译时宽度未知的二维数组的函数 ? o 7.17 我怎样在函数参数传递时混用静态和动态多维数组 ? o 7.18 当数组...
然后又使用一些内存分配技巧使namestr 数组用起 来好像有多个元素。这样合法和可移植吗? . . . . . . . . . . . . 8 2.7 是否有自动比较结构的方法? . . . . . . . . . . . . . . . . . . . . 8 2.8 如何向接受...
最 近 一 年 多 来 ,在 Internet上 出 现 的 特 别 吸 引 人 的 事 件 就是 Ja va语 言 和 用 Java编 写 的 浏 览 器 HotJava。 1991年 ,SUN MicroSystem 公 司 的 Jame Gosling、 Bill Joe等 人 , 为 在电视 、 ...
C++是一个更好的C,它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。 C++语言最重要的特点是...