무작위 요소로 희소 행렬을 채울 필요가 있습니다. 임의의 요소를 가져 와서 배열의 값, 열 및 행 요소로 쓰려고하지만 세그먼트 오류가 계속 발생합니다.할당 된 메모리에 액세스 할 때 분할 코드
N = 1000, SIZE = 10000으로 설정 한 경우에만 발생합니다 (SIZE = 1000 이하로 설정하면 작동하기 때문에).
이 모든 메모리를 할당 할 수 없거나 할당 한 후에 액세스 할 수 없다는 뜻입니까?
이 메모리 (SIZE = 10'000)를 모두 할당해야한다면 어떻게해야합니까? 누군가 나를 도울 수 있습니까?
#include <stdio.h>
#include <stdlib.h>
typedef struct _matrix {
int size; //number of not-null elements
int ord; //order of matrix
int* val;
int* col;
int* row;
} matrix;
matrix init (int ord, int size)
{
matrix m;
m.ord = ord;
m.size = size;
m.val = malloc(sizeof(int) * size);
m.val = malloc(sizeof(int) * size);
m.val = malloc(sizeof(int) * size);
return m;
}
matrix fill_matrix (int ord)
{
int i, j, gap, size = ord * ord/100;
matrix new_matrix = init(ord, size);
j = 1;
for (i = 0; i < size; i++) {
new_matrix.val[i] = rand() % 9 + 1;
new_matrix.col[i] = rand() % ord + 1; //<------SEGFAULT
new_matrix.row[i] = rand() % ord + 1;
j++;
}
return new_matrix;
}
int main()
{
matrix A;
int n = 1000;
A = fill_matrix(n);
return 0;
}