回答:
tpg2114のコメントはスポットです。試してください:
/* at top */
#include <stdlib.h>
/* definition */
mpz_t *A;
/* initialization of A */
A = (mpz_t *) malloc(100000 * sizeof(mpz_t));
if (NULL == A) {
printf("ERROR: Out of memory\n");
return 1;
}
/* no longer need A */
free(A);
malloc
ここでの呼び出しでエラーが発生する場合は、システムに十分なメモリがありません。
スタックで静的配列を使用したい場合は、ulimit
コマンドを使用してLinuxでスタック制限サイズを大きくしてみてください。
free(A)
、その例にを入れてください!
の代わりmpz_class
にC ++(ref。)での使用を検討することもできmpz_t
ます。任意精度の演算を簡単にすることができます。
これはランダムな例です:
#include <gmp.h>
#include <gmpxx.h>
#include <iostream>
using namespace std;
int main() {
mpz_class A[100000];
for(int i=0;i<100000;i++) A[i]=142412+i;
for(int i=0;i<100000;i++) cout << i << " " << A[i] << endl;
return 0;
}
例:
g++ [[filename]] -lgmp -lgmpxx