作者pinchieh (pinchieh)
看板C_and_CPP
标题[问题] 动态配置多维阵列降低呼叫malloc次数
时间Tue Mar 3 10:29:13 2009
假如我要配置4x5的二维阵列
配置二维本来要呼叫malloc 1+4 = 5次
a = (int**)malloc(4*sizeof(int*));
for(i = 0; i < 4; i++)
*a = (int*)malloc(5*sizeof(int));
参考网路上的资料, 我写了一个呼叫降为2次, 想问三维以上的要怎麽写
网路上似乎只找到二维的
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int **a, i, j;
a = (int**)malloc(4*sizeof(int*));
*a = (int*)malloc(4*5*sizeof(int));
for(i = 0; i < 4; i++)
*(a+i) = *a + i*5;
for(i = 0; i < 4; i++)
{
for(j = 0; j < 5; j++)
{
printf("%d ", a[i][j] = i+j);
}
printf("\n");
}
free(*a);
free(a);
return 0;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.98.232
1F:→ james732:爬文一下 我记得这个问题常被讨论 03/03 10:43
2F:→ windincloud:可以参考ds中将多维阵列以一维表示 03/03 13:16