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 8Valgrind から。

4

1 に答える 1

3

malloc(sizeof(Graph))ポインタに十分なメモリを割り当てているだけです。に変更しmalloc(sizeof(struct Graph_s))ます。

于 2012-07-01T18:39:54.727 に答える