c - 向结构添加元素时出现段错误

标签 c malloc segmentation-fault

为什么我在这个函数中遇到段错误:

#include <stdio.h>
#include <stdlib.h>
#include "math.h"

vec_t mtrx_multiple (sparse_mat_t a, vec_t c) {

    vec_t result;
    int i;

    result.n = a.n;
    printf("result.n: %d\n", result.n);


    result.vec = malloc(a.n * sizeof *result.vec);
    for(i=0; i<a.n; i++) 
        result.vec[i] = c.vec[i] * a.a[a.ja[i]];


    return result;
}

结构是:

typedef struct {
    int n;
    int *vec;
} vec_t;

typedef struct {
    int *a;
    int *ia;
    int *ja;
    int n;
} sparse_mat_t;

感谢帮助

最佳答案

我怀疑问题出在 a.a[a.ja[i]] 上,您应该在使用值a.ja[i] 进行索引之前尝试验证它们a.a.

了解a是如何初始化的以及在哪一行发生段错误将会很有用。

关于c - 向结构添加元素时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2105847/

相关文章:

c - 函数调用中的连线错误

c - 未处理的异常 0xC0000008 : An invalid handle was specified in dynamic recompiler

c - 为什么这段代码会给我段错误?

c - 是否使用了malloc/realloc/calloc?

c - 将 malloc 与结构一起使用

c++ - 打印原子枚举值时 gdb 崩溃

c - 不确定为什么 if 语句导致段错误

c - 指向#define 的指针

c - 缓冲区大小不正确

Java 1.6 段错误 11 (OSX 10.7.4)