代表计算中的一些变量的微小结构肯定应该存储在堆栈中,但是像这样的更常见的结构呢:
typedef struct {
int number_of_nodes;
int number_of_edges;
char *adjacency_matrix;
} graph_t;
现在我将 graph_t 结构存储在堆栈上:
graph_t graph1 = read_graph(PATH);
graph_t graph2 = new_graph(graph1.number_of_nodes);
func(&graph1, &graph2);
是否有任何理由将此结构保留在堆内存而不是堆栈中?
graph_t *graph1 = read_graph(PATH);
graph_t *graph2 = new_graph(graph1->number_of_nodes);
func(graph1, graph2);