gpt4 book ai didi

使用 GMP 库时无法分配内存

转载 作者:行者123 更新时间:2023-11-30 15:49:28 27 4
gpt4 key购买 nike

我需要计算三个二维数组。当我尝试使用 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);
}
}

我该如何解决这个问题?如果其他库有更好的内存分配功能,我对此持开放态度。

最佳答案

对于 t_column=2500 和 row=10^7,您的程序将分配大约 2883 MB 内存。

这个问题与你的物理内存大小无关。如果使用32位操作系统,则有2^32=4GB内存地址空间。通常内核使用1GB地址空间,所以在剩下的3GB中找不到连续空间并且malloc()失败也就不足为奇了。

关于使用 GMP 库时无法分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16264016/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com