[英]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.