动态分配二维数组内存

如果希望在运行时确定多维数组的维数,可以使用堆数组。动态分配二维数组内存需要使用指针的指针。多维数组的内存布局是不连续的,所以应首先为数组的第一个下标分配一个连续的数组。该数组的每个元素是指向另一个数组的指针,另一个数组保存的是第二个下标维度的元素。

分配内存的操作如下

// 动态分配二维数组及赋值

#include <iostream>
using namespace std;

int main() {
	//动态分配二维数组内存
	int ** ptr;
	ptr = new int *[3];			
	int i = 0;
	for( i = 0; i < 3;++i){
		ptr[i] = new int[3];
	};
	//
	//数组赋值
	int j;
	for (i = 0; i < 3; ++i) {
		for (j = 0; j < 3; ++j) {
			ptr[i][j] = i+j;
			cout << ptr[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}

上面代码的执行结果为

0 1 2
1 2 3
2 3 4

释放内存
动态分配的二维数组的内存同样需要使用delete来释放,应注意使用循环来释放第一个下标分配的内存。释放内存的造作如下

//内存释放
	for (i = 0; i < 3; ++i) {
		delete [] ptr[i];
	}
	delete [] ptr;
	ptr = nullptr;
	cout << "Memory is cleaned!" << endl;

猜你喜欢

转载自blog.csdn.net/hb_cqy1/article/details/82879040