C语言中如何用malloc和realloc函数定义一个二维数组并且通过循环操作用realloc函数扩展二维数组的长度? 5
2个回答
展开全部
char* buffer;
buffer = (char *)malloc(initialize size);
buffer = (char *)realloc(buffer, initialize size+add size);
一般做法是设定一个初始值,再设定一个追加值。
比如:*p初始分配10个字符空间。
当空间不够用的时候,每次增加20个字符空间。这样会增加效率。
象你这样:初始p = (char *)malloc(10);
当判断空间不够用的时候,重分配:
p = (char*)realloc(p, 10+100*n++); //n做重分配次数计数器,初值=1
如果再不够用,就再次调用:
p = (char*)realloc(p, 10+100*n++); //这时n=2了,n++后=3
buffer = (char *)malloc(initialize size);
buffer = (char *)realloc(buffer, initialize size+add size);
一般做法是设定一个初始值,再设定一个追加值。
比如:*p初始分配10个字符空间。
当空间不够用的时候,每次增加20个字符空间。这样会增加效率。
象你这样:初始p = (char *)malloc(10);
当判断空间不够用的时候,重分配:
p = (char*)realloc(p, 10+100*n++); //n做重分配次数计数器,初值=1
如果再不够用,就再次调用:
p = (char*)realloc(p, 10+100*n++); //这时n=2了,n++后=3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
realloc在a已经分配好的情况下,用于扩展内存。
int **a;
a = (int **)malloc(10 * sizeof(int *));
for (int i = 0; i < 10; i ++)
a[i] = (int *)malloc(200 * sizeof(int));
malloc是分配连续内存的方法:
int **a;
a = (int **)malloc(10 * sizeof(int *));
a[0] = (int*)malloc(10*200*sizeof(int));
for (int i = 1; i < 10; i ++)
a[i] = a[0] + i * 200;
int **a;
a = (int **)malloc(10 * sizeof(int *));
for (int i = 0; i < 10; i ++)
a[i] = (int *)malloc(200 * sizeof(int));
malloc是分配连续内存的方法:
int **a;
a = (int **)malloc(10 * sizeof(int *));
a[0] = (int*)malloc(10*200*sizeof(int));
for (int i = 1; i < 10; i ++)
a[i] = a[0] + i * 200;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询