动态创建和释放三维数组


//动态创建三维数组,四级指针做输出
int get3DArr(char**** arr,int chl,int row,int col) {
	char*** p = NULL;//辅助指针
	p = (char***)malloc(sizeof(char**)*chl);
	for (int i = 0; i <chl ; i++) {
		p[i] = (char**)malloc(sizeof(char*)*row);
	}
	for (int i = 0; i <chl ; i++) {
		for (int j = 0; j <row ; j++) {
			p[i][j] = (char*)malloc(sizeof(char)*col);
		}
	}
	*arr = p;//挂上
	return 0;
}

//完全释放三维数组(释放指向的内存空间,并且将指针的值设为NULL),四级指针做输入
int free3DArr(char**** arr,int chl,int row) {
	char*** p = *arr;//辅助指针
	//1.释放一级指针
	for (int i = 0; i <chl ; i++) {
		for (int j = 0; j <row ; j++) {
			if (p[i][j] != NULL) {
				free(p[i][j]);
				p[i][j] = NULL;
			}
		}
	}
	//2.释放二级指针
	for (int i = 0; i <chl ; i++) {
		if (p[i] != NULL) {
			free(p[i]);
			p[i] = NULL;
		}
	}
	//3.释放三级指针
	if (*arr!=NULL)
	{
		free(*arr);
		*arr = NULL;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/itswrj/article/details/88366021