【发布时间】:2020-07-20 08:55:27
【问题描述】:
我在 C 中使用数据结构向量。像这样
struct intVector
{
int* head;
size_t capacity;
size_t size;
};
在实现 pushIntVector 函数时,当数组的大小等于容量时,我有两种选择。在这种情况下,我需要分配更大的内存并将所有数据复制到其中并释放旧分配的数据。正如文档所说,realloc 函数为 ptr 重新分配内存,而 memcpy 函数将内存从 A 复制到 B。
乍一看,realloc 似乎很适合我的情况,因为我不必负责复制内存和释放旧内存,但如果在线性模式下没有这么大的内存怎么办。另一方面,如果我在其他地方分配一些更大的内存,我可以找到一个并轻松复制到它并释放旧的。所以在这里我无法弄清楚在我的情况下使用哪个。
【问题讨论】:
-
Malloc 也需要连续内存,这对您有什么帮助?
-
"如果线性模式下没有这么大的内存怎么办。"如果
realloc因此而失败,那么是什么让你认为malloc也不会失败? -
This answer 和 this discussion 似乎相关
-
如果您发现我的解释回答了您的问题,您可以通过点击帖子旁边的复选标记接受它作为正确答案。
标签: c memory vector data-structures memory-leaks