我对C相当陌生,刚刚开始冒险进入动态分配数组领域。realloc vs malloc in C
我想我已经得到了大部分malloc
下来,但对realloc
一些问题:
- 能
realloc
用于别的除了增加内存空间的指针? - 尺寸变量是否必须是
int
? 会像下面的工作?
float *L = NULL; int task_count = 5; L = (float*) realloc (L, task_count * sizeof(float));
如果我想进一步增加的空间(一个在这种情况下),可能我只是用类似如下的?
L = (float*) realloc (L, 1 * sizeof(float));
似乎看似简单,它告诉我我可能错过了一些东西。
不,realloc需要告诉你想要的总大小。如果你想增加1,你需要重新分配(在你的情况下)6.还要注意,'realloc'可能会失败,所以你应该先将它的结果分配给一个临时指针,检查成功,然后将它分配给源指针。 – Joe
好吧,故事的士气,我用malloc创建大小我的初始块,然后我可以只使用realloc,但需要特定的我+任何大小增加我需要? – user3287789
另外,感谢您指出故障部分。不太明白为什么他们在[cpp参考页](http://www.cplusplus.com/reference/cstdlib/realloc/)中分配另一个指针。感谢您指出这一点 – user3287789