使用数组操作获取分段错误

时间:2015-04-15 01:46:03

标签: c++ c arrays segmentation-fault gmp

我是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);
}

0 个答案:

没有答案