1

我正在创建一个带有节点和边的简单图。我得到了功能,但有一些内存错误。

我在头文件中有一个 typedef 结构:

typedef struct Graph_s* Graph;

并在 c 中实现。文件:

struct Graph_s {
    Node* nodeArray;
    Edge* edgeArray;  
    size_t edges;
    size_t nodes;
};

和构造函数:

Graph create_graph() {
    Graph newGraph = malloc(sizeof(Graph)); 

    newGraph->edges = 0;
    newGraph->nodes = 0;
    return newGraph;
}

该行Graph newGraph = malloc(sizeof(Graph))给出:Invalid write of size 8来自 Valgrind。

4

1 回答 1

3

malloc(sizeof(Graph))只是为指针分配足够的内存。将其更改为malloc(sizeof(struct Graph_s)).

于 2012-07-01T18:39:54.727 回答