【问题标题】:I have a problem dynamic memory allocation我有一个动态内存分配问题
【发布时间】:2021-04-30 21:15:01
【问题描述】:
int szar(t_obraz obr)
{
    int x = 0, i, j;
    int **wsp;
    wsp = (int **)malloc(obr.wymy * sizeof(int *));
    for (i = 0; i < obr.wymy; i++)
    {
        wsp[i] = (int *)malloc(obr.wymx * sizeof(int));
    }
    for (i = 0; i < obr.wymy; i++)
    {
        for (j = 1; j < 3 * obr.wymx; j += 3)
        {
            wsp[i][x] = (obr.obraz[i][j - 1] + obr.obraz[i][j] + obr.obraz[i][j + 1]) / 3;
            x++;
        }
    }
    for (i = 0; i < obr.wymy; i++)
    {
        obr.obraz[i] = (int *)realloc(obr.obraz[i], obr.wymx * sizeof(int));
    }
    for (i = 0; i < obr.wymy; i++)
    {
        for (j = 0; j < obr.wymx; j++)
        {
            obr.obraz[i][j] = wsp[i][j];
        }
    }
    for (i = 0; i < obr.wymy; i++)
    {
        free(wsp[i]);
    }
    free(wsp);
}

尝试编译时出现分段错误(核心转储)。我在结构 t_obraz 中有数组 obraz[wymy][3*wymx]。

【问题讨论】:

  • 你也有缩进的问题,(缺少)。
  • 你应该包括类型声明,特别是对于结构体。

标签: arrays c memory-management


【解决方案1】:

我认为您需要在外部循环中重置您的 x

for (i=0;i<obr.wymy;i++) {
    x = 0; // here
    for (j=1;j<3*obr.wymx;j+=3) {
        wsp[i][x]=(obr.obraz[i][j-1]+obr.obraz[i][j]+obr.obraz[i][j+1])/3;
        x++;
    }
}

【讨论】:

    猜你喜欢
    • 2011-01-19
    • 2022-01-22
    • 1970-01-01
    • 2011-09-13
    • 2011-03-24
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多