【发布时间】:2017-05-05 20:21:21
【问题描述】:
对同一个变量多次调用 malloc() 会发生什么?我应该如何释放以前分配的内存?我打算使用 struct iovec 来存储数据(以便以后可以发送/写入这些块)。在调用每个 malloc 之前,我想保存对 iovec 数组的当前引用。完成此操作后,我将对同一变量调用 malloc 以获取固定大小的新内存块。用完后,我将它保存在iovec数组中并再次调用malloc等等。我可以稍后释放 iovec 阵列吗?请让我知道这是否是正确的方法或建议任何更好的替代方法?
【问题讨论】:
-
你能用
realloc代替吗?我们需要查看一些代码以帮助您 -
请发布您的代码,很难说出您的意思。您可以创建一个指针数组,并将每个分配保存在一个数组元素中。然后你可以稍后循环遍历数组并释放它们。
-
@RoiHatam:我不想调用 realloc。因为在这种情况下,这似乎是非常昂贵的操作。
-
你不能在“同一个变量”上调用
malloc。您可以将其结果分配给同一个变量。 -
@EugeneSh。 : 在我对同一个变量调用 malloc 之前,我会将引用保存在某个数组中。
标签: c arrays pointers memory-management malloc