gpt4 book ai didi

C 结构中的内存错误

转载 作者:行者123 更新时间:2023-11-30 14:26:06 25 4
gpt4 key购买 nike

以下代码片段会导致 MAXV 大值出现内存错误。如何定义这个结构,以便将其用于边缘和度数中的许多值?

#define MAXV  1441295   
typedef struct {
edgenode *edges[MAXV+1];
int degree[MAXV+1];
int nvertices;
int nedges;
int directed;
} graph;


initialize_graph(graph *g, bool directed)
{
int i;

g -> nvertices = 0;
g -> nedges = 0;
g -> directed = directed;

for (i=1; i<=MAXV; i++) g->degree[i] = 0;
for (i=1; i<=MAXV; i++) g->edges[i] = NULL;
}

最佳答案

从我的 Crystal 球中看到,我看到您正在创建 graph 类型的局部变量。这些局部变量中的每一个都超过 10,000,000 字节大,这会溢出系统中的可用堆栈空间。

尝试将对象创建为静态对象或堆分配对象。

也就是说,不要这样做:

int f(graph g) {
graph newg = g;
}

相反,这样做:

graph g;
int f() {
g.ediges[g.nedges++] = 0;
}

或者这个:

int f(graph *pg) {
pg->edges[17] = 0;
}

关于C 结构中的内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9608000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com