c - C中的内存消耗

标签 c memory struct

我想知道如何测量 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 使用的空间量? 其他可能性?

最佳答案

不,您不能纯粹使用 sizeof-operator 来完成它,因为它只能用于编译时静态内存分配。

充其量您可以实现一个新功能,例如

unsigned int getMemoryUsage(Graph *g){ 
    return sizeof(*G) + G->V * sizeof(link);
}

关于c - C中的内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9433572/

相关文章:

c - openmp 中的 malloc 用于并行循环

c - 如何从 DHCP 服务器请求特定的 IP 地址?

c - 可以在事务期间检查 WAL 文件吗?

常量与静态常量

C++ 结构初始化数组

我们可以使用c写入word文件吗?

c - 将二进制读入字符串c

memory - 原子操作是否建立了先行关系?

戈兰 : Passing structs as parameters of a function

需要 c 基本结构帮助