노드와 모서리가있는 간단한 그래프를 만듭니다. 나는 기능을 가지고 있지만 메모리 버그가있다. C에서포인터 태그 구조가있는 Malloc
typedef struct Graph_s* Graph;
및 구현 :
나는 타입 정의 헤더 파일에 구조체가있다. 건설
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는 권장되지 않으며 구조체 유형에 대한 typedef는 필요하지 않습니다. 나는'struct Graph {...};를 선언하고 구조체를'struct Graph'라고하고 포인터 유형을'struct Graph *'라고 부릅니다. 따라서 :'struct Graph newGraph = malloc (sizeof * newGraph);'. 그리고 매개 변수가없는 함수는'(void)'를 사용해야합니다 : struct Graph create_Graph (void) {...}' –
입력 해 주셔서 감사합니다! 그것은 명백하게 상황을 명확하게 유지합니다. – Jerry