C++动态分配和释放多维数组
假设需要一个A x B x C的三维数组
方法1
分配:
int *** a = new int ** [A];
for(int i = 0; i < A; ++i){
a[i] = new int * [B];
for(int j = 0; j < B; ++j)
a[i][j] = new int[C];
}
释放:
for(int i = 0; i < A; ++i){
for(int j = 0; j < B; ++j)
delete [] (a[i][j]);
delete []a[i];
}
delete [] a;
a = NULL;
方法2
分配:
int (*a)[B][C] = new int [A][B][C];
释放:
delete [] a;
a = NULL;
C中方法类似
简单时间测试:
方法2更快
原因:malloc和 new操作的时间开销大,其开销以调用次数为主要衡量标准
0 Comments:
Post a Comment