我需要计算三个二维数组。当我尝试使用 GMP 库初始化数组时。我收到以下错误:
GNU MP: Cannot allocate memory (size=16)
Aborted (core dumped)
我的内存是8GB。t_column
大约是 2500。row
是一个变量,可以超过 10^7。部分代码如下所示:(最后一个for循环导致错误)
mpf_t **h;
mpf_t **t;
mpf_t **r;
h = (mpf_t**)malloc(sizeof(mpf_t *)*row);
t = (mpf_t**)malloc(sizeof(mpf_t *)*row);
r = (mpf_t**)malloc(sizeof(mpf_t *)*256);
int i, d, j;
for(i = 0; i < row; i++) {
h[i] = (mpf_t *)malloc(sizeof(mpf_t)*256);
}
for(i = 0; i < row; i++) {
t[i] = (mpf_t *)malloc(sizeof(mpf_t)*t_column);
}
for(i = 0; i < 256; i++) {
r[i] = (mpf_t *)malloc(sizeof(mpf_t)*t_column);
}
for(i = 0; i < row; i++) {
for(j = 0; j < 256; j++) {
mpf_init2(h[i][j], 8);
mpf_set_str(h[i][j], "0.0", 0);
}
}
我怎样才能解决这个问题?如果其他库具有更好的内存分配能力,我对此持开放态度。