c - C编程中非常大的矩阵

标签 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));
}

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

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

提前感谢您的任何建议,

大卫亚历杭德罗。

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

最佳答案

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

只需使用一次malloc - 即:

#include <stdlib.h>
int *matrix = malloc(R * P * sizeof(int));

然后计算索引为

index = column + row * P;

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

关于c - C编程中非常大的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10874258/

相关文章:

C++ 套接字 : Enabling Promiscuous Mode in Windows

c++ - C/C++ 中 union 的大小

r - 用 NA 填充两个矩阵的缺失数据

检查矩阵中单元值的邻居

python - Pandas DataFrame 和系列的矩阵乘法

c - 我们如何使用 fork 创建 3 个父级和不同的子级

c - C 中 SWITCH CASE 中的多个字符

c - 遍历可能的密码时无限循环

python - 应用 Up Vector 查看向量

计算 C 数组的行列式