- //一维的
- string *pa = new string[10];//默认构造函数进行了初始化,为空
- int *pa = =new int[10];//内置类型的对象,没有进行初始化
- int *pa = =new int[10]();//初始化为0
- delete [] pa;
- 允许动态分配空数组
- size_t n = get_size();
- int *p = new int[n];
- for (int* q = p;q !=p+n;++q)
- //创建数组
-
-
- //二维数组动态数组分配和释放
- //数组指针的内存分配和释放
- //方法一
- 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];
动态数组的赋值:
memset
Sets buffers to a specified character.
void*memset(void*dest,intc,size_tcount);
可见memset只能作用于一个一维数组void*dest,因此最好的办法就是和二维数组的动态分配结合起来,new一个,memset一个。具体写法如下:
int **array;
array=new int *[10];
for(int i=0;i<10;i++)
{
array[i]=new int [5];
memset(array[i],0,5*sizeof(int));
}
转自 http://hi.baidu.com/jian_fei_yang/item/cf49006f5d53620aa0cf0ffe