C编程中非常巨大的矩阵

Ano*_*ist 2 c matrix

今天是个好日子,

我是 C 编程的新手,我对如何在 C 中处理非常大的矩阵没有很多知识。例如,矩阵大小为 30.000 x 30.000。

我的第一种方法是动态存储内存:

int main()
{      int **mat;
    int j;
    mat = (int **)malloc(R*sizeof(int*));
    for(j=0;j<R;j++)
        mat[j]=(int*)malloc(P*sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)

处理 8.000 x 8.000 的 +/- 矩阵是个好主意。但是,不是更大。所以,我想请求任何来处理这种巨大的矩阵。

正如我之前所说:我是 C 新手,所以请不要期望太多的经验。

提前感谢您的任何建议,

大卫·亚历杭德罗。

PD:我的笔记本电脑配置是 linux ubuntu、64 位、i7 和 4GB 内存。

Ed *_*eal 5

对于这么大的矩阵,我会尽量避免对malloc. 这将减少设置数据结构的时间并消除动态内存的内存开销(malloc存储有关块大小的附加信息)

只需使用malloc一次 - 即:

#include <stdlib.h>
int *matrix = malloc(R * P * sizeof(int));
Run Code Online (Sandbox Code Playgroud)

然后计算索引为

index = column + row * P;
Run Code Online (Sandbox Code Playgroud)

还可以按顺序访问内存,即首先按列访问。更好的缓存性能。