我有一个三维位表数组作为

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失败(在上面的代码中),则最终将导致内存泄漏。

10-08 07:36