2
我已经编写了代码,用于生成包含行和列的矩阵,每行都有用户指定的列数(请参阅下面的node_degree)。然后我用矩阵填充矩阵中的每个条目(值并不重要)。矩阵的内存分配
当我使用Geany在Fedora上构建程序时,没有收到任何错误消息。然而,当我运行程序我得到:
./geany运行script.sh 5号线:3586段错误(转储核心 )” ./ ad_matrix_outside_main
注:ad_matrix_outside_main是名且该C文件的
下面是程序:
#include <stdio.h>
#include <stdlib.h>
#define NODES (10)
#define CONNECTED (5)
int main()
{
int i, j;
double **matrix;
matrix = (double **)malloc(sizeof(double *)*NODES);
int node_degree[CONNECTED]; //Example: 5 nodes are connected (have non-zero degree).
for(i=0; i<CONNECTED; i++)
{
printf("Enter degree of node %d\n", i); //Index is node, value is degree.
scanf("%d", &node_degree[i]);
}
for(i=0; i<CONNECTED; i++)
{
matrix[i] = (double*)malloc(sizeof(double)* (node_degree[i] + 1));
}
for(i=0; i<NODES; i++)
{
for(j=0; j<node_degree[i]; j++)
{
matrix[i][j] = j; //j can be the node that node i connected to.
}
matrix[i][j] = NODES;
}
for(i=0; i<NODES; i++)
{
free(matrix[i]);
}
free(matrix);
return(0);
}
什么引起的错误我有一种感觉我的符号?可能是问题。
每当你得到一个分割故障,您应该编译'-g' GCC选项的代码,然后使用bash命令'的ulimit -c unlimited'使核心转储和执行的二进制文件,所以,你会得到一个核心转储。然后你可以使用gdb和'backtrace'来知道崩溃的真实原因 – VoidPointer