簡體   English   中英

矩陣乘法C語言

[英]Matrix Multiplication C language

因此,矩陣乘法存在問題。 我必須將矩陣的值存儲在文件中,然后將它們相乘。 當我嘗試乘以900x900矩陣時,會出現問題:分段錯誤(核心轉儲),但800x800可以正常工作)。 我的代碼有一部分:創建用於存儲的文件:

FILE *A, *B;
int num = atoi(argv[1]);
float a[num][num];
float b[num][num];
A = fopen(argv[2],"r");
B = fopen(argv[3],"r");
for (int i = 0; i < num; ++i)
{
    for (int j = 0; j < num; ++j)
    {
        fscanf(A,"%f",&a[i][j]);
    }
}
for (int i = 0; i < num; ++i)
{
    for (int j = 0; j < num; ++j)
    {
        fscanf(B,"%f",&b[i][j]);
    }
}

所以我沒有寫矩陣乘法的函數,因為它有效

您的兩個float可變長度數組占用2 * 900 2 * 4字節-略超過6Mb。 VLA通常在堆棧上創建,其大小在系統和進程之間會有所不同,但在現代台式機系統上通常約為2至8 Mb。

創建一個在堆棧上很大的數組是不合理的,並且失敗也就不足為奇了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM