【发布时间】:2021-02-13 19:37:18
【问题描述】:
我对 C 很陌生,并试图更好地理解它,但我发生了一些我不完全理解的奇怪行为: 我有这 2 个结构:
typedef struct edge
{
int start_node;
int end_node;
} edge;
typedef struct graph
{
int node_count;
edge *edges;
} graph;
如果我现在初始化我的图表(分配内存):
graph *g = malloc((sizeof(edge )* (edge_amount)) + sizeof(int));
如果我现在尝试初始化我的边缘,例如: (调用函数 parse_graph(g->edges);)
void parse_graph(edge *edges){
for (int i = 0; i < edge_amount ; i++)
{
edge edge;
edge.start_node = some int
edge.end_node = some int
edges[i] = edge;
}
}
我在边缘[i] = 边缘线中遇到段错误。 但是,当我初始化我的图表(只有边缘)时:
edge *g= malloc((sizeof(edge )* (edge_amount)) + sizeof(int));
我调用了类似 parseInput(g) 的函数,但没有得到段错误。 我确定我忘记了一些重要的事情,但我无法弄清楚。我在这里缺少什么?
【问题讨论】:
标签: c pointers struct segmentation-fault