【发布时间】:2012-03-15 01:40:25
【问题描述】:
我想知道如何在 C 中测量图形的内存消耗。 使用以下代码,我初始化了一个带有 V 个节点且没有边的图形:
Graph GRAPHinit(int V)
{
int v;
Graph G = malloc(sizeof *G);
G->V = V; G->E = 0;
G->adj = malloc(V*sizeof(link));
for (v = 0; v < V; v++) G->adj[v] = NULL;
return G;
}
Graph 是一个结构体,表示为邻接表:
struct graph {
int V;
int E;
link *adj;
};
typedef struct node *link;
struct node {
int v;
link next;
};
typedef struct graph *Graph
是否可以使用 sizeof-Operator 测量 G 使用的空间量? 其他可能性?
【问题讨论】:
-
这段代码真的可以编译吗?
-
@Lefteris 不,它没有。
-
我认为它缺少
typedef struct graph *Graph。 @PaulP.R.O.是的,你可以,而且它非常很有用。sizeof是一个编译时构造(忽略 VLA),它简单地评估为G指向的类型的大小。 -
@delnan 很酷,现在很好。谢谢