我正在創建一個帶有節點和邊的簡單圖。我得到了功能,但有一些內存錯誤。帶指針標記結構的malloc
我在頭文件中的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))
給出了:從Valgrind的Invalid write of size 8
。
一些風格建議:不推薦使用'typedef's指針類型,'typedef's結構類型是不必要的。我只需聲明'struct Graph {...};'並將結構稱爲struct Graph,並將指針類型稱爲struct Graph *。因此:'struct Graph newGraph = malloc(sizeof * newGraph);'。而一個沒有參數的函數應該使用'(void)':'struct Graph create_Graph(void){...}' –
感謝您的輸入!這有力地保持了事情的清晰。 – Jerry