动态二维数组如何申请内存
typedef struct
{
int m;//顶点个数
VexType *vexs;//顶点
AdjType *arcs[];//关系表
}GraphMatrix, *PGraphMatrix;//邻接矩阵表示法
有点晕了,这个arcs怎么申请内存? 动态二维数组如何申请内存
[解决办法]
不要用AdjType*[]类型,用AdjType ** 来表示“数组的数组”。
分配和释放:
AdjType ** alloc_adj_array_2( unsigned int row_count, unsigned int col_count )
{
AdjType ** result = malloc( row_count * sizeof(AdjType*) );
int i;
if( result == NULL )
{
goto err;
}
else
{
for( i = 0; i < row_count; ++ i )
{
result[i] = malloc( col_count * sizeof( AdjType ));
if( result[i] == NULL )
{
goto err;
}
}
}
return result;
err:
if( result != NULL )
{
for( i = 0; i < row_count; ++ i)
{
if( result[i] != NULL )
{
free(result[i]);
}
}
free(result);
}
return NULL;
}
void free_adj_array_2( AdjType ** ary )
{
for( i = 0; i < row_count; ++ i)
{
free(ary[i]);
}
free(ary);
}
int *p[10];
for(int i = 0; i < 10; i++)
p[i] = (int *)malloc(sizeof(int)*10);