请问:如何用C++实现一维、二维数组的动态分配、初始化与释放?
答:
【一维数组】
1. 动态分配: int *array=new int [n];
2. 初始化:memset(array,0,n*sizeof(int)); (也可以利用一个for循环对其赋值初始化)
3. 撤销:
delete [] array;
array=NULL;
【二维数组】
1. 动态分配: //定义二维数组 array[10][5]
int **array;
array=new int *[10];
for(int i=0;i<10;i++)
array[i]=new int [5];
2. 初始化
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));
}
3. 撤销
for (int i = 0; i < 10; ++i)
{
delete[] array[i];//由里至外,进行释放内存。
array[i] = NULL;//不要忘记,释放空间后p[i]不会自动指向NULL值,还将守在原处,只是释放内存而已,仅此而已。
}
delete [] array;
array = NULL;