c - 为什么当我在 C 语言的矩阵乘法程序中增加矩阵元素的值时会出现段错误?

标签 c multithreading pthreads matrix-multiplication

为什么当我增加矩阵元素的值(例如 11 20 10)时出现段错误。通常我会正确地得到结果矩阵的第一行全为 0 和矩阵的第二行。有时它也会给出正确的结果。我不知道这段代码有什么问题

最佳答案

一个潜在的问题是成员变量 K 看起来可以更改:

(data->B) = malloc((data->K)*sizeof(float*));
scanf("%d%d", &(data->K), &(data->N));
for ( i=0;i<(data->K);i++)
   ...

它在设置数组A时首先被初始化。然后它用于分配基本数组来保存 B 的列。但接下来的 scanf 可能会导致值不再与之前相同(可能导致内存覆盖)。

关于c - 为什么当我在 C 语言的矩阵乘法程序中增加矩阵元素的值时会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14969767/

相关文章:

ios - Xcode 5 调试 - CPU 报告/使用情况中的 "Unnamed"线程

c++ - 哪些 C++ 标准库头调用了 GCC 的 -pthread 选项要求?

c - struct.field 返回另一个值,为什么?

c - 函数内和函数外的 char 有什么区别?

Java线程计数器 "issue"?

c++ - 带有 CWinThread 指针数组的 WaitForMultipleObjects

c - 无法为 C 中的函数创建 pthread

C - pthread_self() 被截断前 4 个字节?

在 c 中的 main() 中调用 main()

c - 设置二进制数等于设置掩码的其他二进制数