用外狒芙梨VC++6.0编写程序,经常用到二维数组,所以我们有必要学会二维数组存储空间的分配与释放,尤其是在不确定分配个数的时候,虽然网上有相关的介绍,但网上的方法有些混乱,所以我就以我对VC++6.0使用的经验来介绍一下二维数组存储空间的分配与释放。
本经验选取int数据类型为例。
1、当知道二维数组元素的个数,即知道要建立几行几列的二维数组的情况较为简单,例如建立一个3行4列的二维数组就可以用如下代码。
int a[3][4];
使用这种方法在最后不必要加另外的代码释放内存,二维数组所在的函数运行结束时,系统会自动释放相应的内存,
2、用new来创建二维数组。当我们不知道要建立几行几列的二维数组时,如建立一个m行n列的二维数组(m和n是未知数),用”int a[m][n];”是错误的,因为在这个语句中,m、n必须是正整常量表达式,m和n必须是常量。但如果使用new来创建二维数组就不受常量的限制了,new来创建二维数组过程是先创建行内存,然后在每一个行内存再划分列内存,我们可以使用如下代码。
a= new int*[m];
for(int i=0; i<n; i++)
a[i]=new int[n];
当然,使用new创建二维数组这种方法,在最后必须要用delete语句来释放内存,过程是先释放每一行的列内存,最后才释放行内存。释放内存的代码如下。
for(int i=0; i<n; i++)
delete G.arcs[i];
delete []G.arcs;
当然可以用new来3行4列的二维数组了。
本方法是在小编上课时学到的,仅供参考,在实际应用中应结合其他代码加以灵活使用。