以下是實現圖表的C代碼:。該代碼在執行後會引發分段錯誤。我嘗試使用gdb和設置斷點 在第一個malloc操作之前調試程序。在malloc操作之前的緩衝區的值是0x00 .....我怎樣才能克服這個問題,爲什麼會發生這種情況?爲什麼在執行此c代碼段時分段核心轉儲
#include<stdio.h>
#include<malloc.h>
typedef struct graph
{
int v;
int e;
int **adj;
}graph;
int main()
{
int i,u,v;
graph *g=(graph*)malloc(sizeof(graph)); // first malloc call
scanf(" %d %d",&(g->v),&(g->v));
g->adj=malloc(sizeof((g->v)*(g->v)));
for(u=0;u<(g->v);u++)
{
for(v=0;v<(g->v);v++)
g->adj[u][v]=0;
}
printf(" Enter input");
for(i=0;i<(g->e);i++){
scanf("%d %d",&u,&v);
g->adj[u][v]=1;
g->adj[v][u]=1;
}
printf("print matriix ");
for(u = 0; u<(g->v); u++) {
for(v = 0; v<(g->v) ; u++)
printf("%d",(g->adj[u][v]));
printf("\n");
}
return 0;
}
爲什麼不使用calloc呢?那麼你不需要初始化爲0 –
@ChristianTernus行,那好些。 – Kevin
@Kevin Overzealous代碼格式化擴展。必須停止使用它。 –