【发布时间】: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