我有以下C
代码:多维阵列,不同的行的分配用malloc长度
int *a;
size_t size = 2000*sizeof(int);
a = (int *) malloc(size);
工作正常。但是,如果我有以下几点:
char **b = malloc(2000*sizeof *b);
其中b
每一个元素都有不同的长度。
怎么可能为b
做同样的事情,就像我为a
做的那样;即以下代码将保持正确?
char *c;
size_t size = 2000*sizeof(char *);
c = (char *) malloc(size);
如果你在一次操作中分配N * M个字节,那么你手动填充所有的c [i]:c [i] = p + M * i; – 2009-12-28 18:28:43
这取决于c的类型 - 如果它是char **,那么是的,如果它是char *,那么索引改变:element [i] [j]〜c [i * M + j]。 – 2009-12-28 18:30:38
@Nikolai N Fetissov,代码中有很多malloc,这怎么可以全部释放?通过也使用for循环? – e19293001 2011-10-24 08:02:11