gpt4 book ai didi

c - 调整二维动态分配表大小时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:23 24 4
gpt4 key购买 nike

<分区>

我有二维的、动态分配的表。调整表格大小。

1) 创建一个新的。

2) 删除之前的指针,分配内存。

3) 分配新的指针。

代码:

#include <stdio.h>
#include <stdlib.h>

int** create(int rows, int columns)
{
int **tab = (int**)malloc(rows * sizeof(int*));
int i=0;
for(;i<rows; ++i)
{
tab[i] = (int*)malloc(columns * sizeof(int)); /* tab[i] = (int*)calloc(columns , sizeof(int)); */
}

return tab;
}
void deleteTab(int **tab, int rows)
{
int i=0;
for(;i<rows;++i)
{
free(tab[i]);
}
free(tab);
}
void resize(int **tab, int oldRows, int newRows, int newColumns)
{
int **newTab=create(newRows, newColumns);
deleteTab(tab, oldRows);
tab=newTab;
}
void printTab(int **tab, int rows, int columns)
{
int i=0, j=0;
for(i=0;i<rows;++i, printf("\n"))
{
for(j=0;j<columns;++j)
{
printf("%i ", tab[i][j]);
}
}
}
int main()
{
int **tab=create(4,7);
resize(tab,4,8,9);
int i=0, j=0;
for(i=0;i<8;++i)
{
for(j=0;j<9;++j)
{
tab[i][j]=3;
}
}
printTab(tab,8,9);
}

输出:段错误。

调整表格大小是否是一种好方法/算法?如何省略segmentation fault错误?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com