我有一个三维位表数组作为bit_table[dim1][100][200];
第二维和第三维始终相同。
但是dim1必须随着时间增长。
当此bit_table已满时,其大小需要在dim1维度上增长,并且旧内容需要保留
为了保留表的旧内容,我是否应该只创建一个临时数组,将旧数组的数据复制到其中,然后在扩展数组之后,复制回该数据?还是有更好的方法呢?
编辑:
int dim1=10;
unsigned char (*bit_table)[100][200] = (unsigned char)malloc(dim1 * sizeof(*bit_table));
printf("enter new dimension\n");
scanf(dim1);
....
最佳答案
您可以执行以下操作:
int (*bit_table)[100][200] = malloc(dim1 * sizeof(*bit_table));
...
bit_table = realloc(bit_table, dim1_new * sizeof(*bit_table));
...
free(bit_table);
显然,这两个调用都需要适当的错误处理。特别是,如果
realloc
失败(在上面的代码中),则最终将导致内存泄漏。