我有一个全局2D数组并迭代这样的值(MAXV = 100,在graph.h中定义):
#include "graph.h"
int adjacency_array[MAXV][MAXV];
manipulate(graph *g){
int m,n;
for (m = 1; m <= g->nvertices; m++){
for (n = 1; n <= g->nvertices; n++){
if (m != n){
if (adjacency_array[n][m] != 1){
}
}
}
}
我只关心索引1-6,而不是0或&gt; 6。在这种情况下,g->nvertices
是6.在迭代2D数组的同时,我得到一个seg。 if (adjacency_array[n][m] != 1)
的错误。它的具体情况是seg。当m = 4且n = 3时,故障处于。检查数组的任何值都将是seg。那时候的错误,所以我不知道这些值是否特别成问题。如果我提供的内容不清楚,我很抱歉,如果需要,我会尽力澄清。
答案 0 :(得分:0)
根据您的假设(MAXV == 100
和g->nvertices == 6
),您的代码不应该是错误的,因此您的假设是错误的。
最可能的解释是您传递的指针g未正确初始化,或者不是图形指针
在这种情况下,访问g->nvertices
可能会导致seg错误,或者在访问MAXV
时可能返回等于或大于adjacency_array[n][m]
的值导致seg-fault。
在调试模式下,Microsoft's C Runtime for example用大数字填充内存。
您是否尝试使用调试器运行或打印MAXV
和g->nvertices
的值?