我是C ++和GMP的初学者,但我必须将它用于我当前涉及各种大小数组的项目。一切都还好,直到我达到128x128阵列大小。我收到了这个错误:
Segmentation fault (core dumped)
我的同事建议我逐个运行代码以查看错误何时开始,所以除了初始化部分之外我删除了所有代码。当我运行它时,我得到了分段错误错误。我的初始化有什么问题吗?
#include <iostream>
#include <math.h>
#include <gmp.h>
void mpf_array_clear(mpf_t*, int, int);
void mpf_array_init(mpf_t*, int, int);
void mpf_array_clear(mpf_t *input, int a, int b){
for(int i=0; i<a;i++)
for (int j=0; j<b;j++)
mpf_set_d(*(input+j+i*b),0);
}
void mpf_array_init(mpf_t *input, int a, int b){
for(int i=0; i<a; i++)
for(int j=0; j<b; j++)
mpf_init(*(input+j+i*b));
}
int main(){
int N = 128;
//===========================================================
//Initialization
//===========================================================
mpz_t y[N][N];
mpz_array_init(y[0][0],N*N,2048);
mpz_t yy[N][N];
mpz_array_init(yy[0][0],N*N,2048);
mpz_t cf;
mpz_init(cf);
mpz_t C[N][N];
mpz_array_init(C[0][0],N*N,2048);
mpz_t M[N][N];
mpz_array_init(M[0][0],N*N,2048);
mpz_t MM[N][N];
mpz_array_init(MM[0][0],N*N,2048);
mpf_t EE[N][N];
mpf_array_init(*EE,N,N);
mpf_t AA,BB,CC;
mpf_init(AA);
mpf_init(BB);
mpf_init(CC);
mpf_t RMM[N][N];
mpf_array_init(*RMM,N,N);
mpz_t xoo[N][N+1];
mpz_array_init(xoo[0][0],N*(N+1),2048);
mpz_t xx[N][N];
mpz_array_init(xx[0][0],N*N,2048);
mpz_t xo[N][N+1];
mpz_array_init(xo[0][0],N*(N+1),2048);
mpz_t x[N][N];
mpz_array_init(x[0][0],N*N,2048);
}