更改矩阵中的值时出现分段错误

2023-12-24

这是我动态定义的矩阵 A。 a 和 b 的值为 9,因此它是一个 9x9 矩阵。

double **A = (double **) malloc(a * sizeof(double *));
    for (int i = 0; i < a; i++) {
      A[i] = (double *) malloc(b * sizeof(double ));
      }

现在,当我执行以下代码时,出现分段错误。在本例中 z=49

for(j=0; j<z; j++){
      for(i=0; i<z; i++){
          A[j][i]=1.0;
          }
          }

我尝试更改 z 的值及其工作直到 z=30。 我正在遍历列,然后遍历行并更改特定元素的值


您正在分配一个表示 9 x 9 矩阵的数据结构。您尝试分配值,就好像它的尺寸(至少)为 49 x 49。这严重超出了对象的边界,产生未定义的行为。分段错误/分段错误是这种情况引起的未定义行为的常见表现。

UB 的表现不同z10 到 30 之间是无关紧要的。特别是,如果它的表现恰好与你的结论“它有效”一致,这并不意味着该程序是正确或安全的,也没有说明 UB 应如何体现其他价值观z,或者甚至它应该可靠地以相同的方式表现出来z在这个范围内。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改矩阵中的值时出现分段错误 的相关文章

随机推荐