【问题标题】:3d array allocation by void function通过 void 函数分配 3d 数组
【发布时间】:2012-07-21 21:43:33
【问题描述】:

当 i=0 和 j=2 时,我得到一个分段错误; 但我不知道为什么!

你能帮我吗?

这是我的职责:

void allocationdynamiquetableautroisdimdentier(int**** Matrice,int nbniveau, int nbligne, int nbcolonne)
{
int i,j;
    *Matrice=(int***) malloc (sizeof(int**)*nbniveau);
    for (i=0; i<nbniveau; i++)
    {
        (*(Matrice))[i]=(int**) malloc (sizeof(int*)*nbligne);  // allocation dynamique de la matrice Matrice
        for (j=0; j<nbligne; i++)
        {
            ((*(Matrice))[i])[j]=(int*) malloc (sizeof(int)*nbcolonne);
        } 
    }

}

【问题讨论】:

  • 三指针,真的吗????天哪,为什么?
  • @TonyTheLion 再次阅读。有 4 个星号。
  • 当然有更有效的方法来实现这一点,而且有太多不必要的括号,但我不明白为什么它会出错,除非 malloc 返回 NULL。
  • 分配一个平面数组并使用辅助函数在 (i,j,k) 到平面索引之间转换并返回可能更合理。
  • 如果你从不增加 j,j 怎么可能等于 2?

标签: c multiple-indirection


【解决方案1】:
        for (j=0; j<nbligne; i++)

应该是

        for (j=0; j<nbligne; j++)

【讨论】:

    【解决方案2】:

    两个循环语句中都有i++

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      • 2012-05-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多