二维数组的动态分配(new)初始化(memset)和撤销(delete)
Posted 积少成多
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二维数组的动态分配(new)初始化(memset)和撤销(delete)相关的知识,希望对你有一定的参考价值。
来自http://blog.csdn.net/maverick1990/article/details/22829135
一维数组
动态分配,int *array = new int[10]
初始化,memset(array,0,sizeof(array));
撤销,delete[] array
二维数组m行n列
int **d; d = new int *[10]; for(int i =0;i<10;i++){ d[i] = new int[5] }
先分配一个10单元的数组指针的指针的首地址给**d,然后对其每个首地址进行遍历,
完成一个5单元的数组的动态分配,并把首地址给*d[i],最后完成d[10][5]的动态分配。
怎么初始化二维数组?
void memset(void* dest,int c,size_t count)////
sets buffers to a specified character.
memset只能作用于一个一维数组的void *dest,因此最好的方法就是和二维数组的动态分配
结合起来,new一个,memset一个。
例如:
int **d; d = new int *[10]; for(int i = 0;i<10;i++){ d[i] = new int[5]; memset(d[i],0,5*sizeof(int));///当sizeof一个指针时,返回值为指针本身的大小而不是指针指向区域的大小,
///所以第三个要明确空间大小,不能sizeof(d[i]). }
如何撤销?
delete[][] d
以上是关于二维数组的动态分配(new)初始化(memset)和撤销(delete)的主要内容,如果未能解决你的问题,请参考以下文章