我使用的是32位的Ubuntu虚拟机上Eclipse来对某个项目时。在尝试实现一个结构或者试图运行特定功能时,我遇到了一个很大的问题。的功能是这样的一种:指针用C - “段错误”构建矩阵
int count (matrix m, int v[], int w[], int col) {
int r=0;
int j=0;
while (j < m.length) {
int k=0;
bool aux=true;
while (k < col && aux){
if (v[k] == 1) {
if(m.i[j][k] != w[k])
aux=false;
}
k++;
}
if(aux) r++;
j++;
}
return r;
}
该函数接收一个矩阵(如下定义),与一和零(学习搜索哪个列,我们希望在这些列于查询的值的向量和向量还列(等于长度的向量和矩阵),当它攻击的数量第二个“如果”它给了我分段错误(我不明白它是什么),我可以看到,这是不正确的定义这样的说法,但我已经尝试过,并试图和我似乎无法找到一种方法来访问向量中的值这里紧跟我的结构矩阵:
typedef int *ind;
struct matrix {
ind *i;
int length;
};
typedef struct matrix matrix;
在这种ST我的矩阵有一个指针和长度(行数);指针指向一个指针向量(每行一个指针),每个指针都指向一个向量,实际上,这是我矩阵的一行。在这里我去功能添加和创建一个空的矩阵:
matrix emptyS(int n, int col) {
matrix m;
int d=0;
m.length=0;
m.i=(ind*) malloc(sizeof(int)*n);
int x;
for (x=0; x < n; x++)
{
*m.i = (int*) malloc(sizeof(int)*col);
}
while (d<n){
m.i[d]=NULL;
d++;
}
return m;
} /*Updated*/
matrix add(matrix m,int v[]){
m.i[m.length+1]=v;
m.length++;
return m;
}
我知道这是一个很具体的问题,但我一直在疯狂改变我的功能似乎并不能获得成功。
你可以在崩溃的'if'和打印相关值('m','w','m.i','j','k')之前添加一个调试打印行吗?或者在调试器中查看它们? – Vlad 2012-04-22 13:08:16