【发布时间】:2014-07-18 18:19:57
【问题描述】:
看起来realloc 不会释放旧内存(无论成功还是失败),而vector 总是删除旧内存并分配一个新块。
我可以说对于 POD 数据,realloc 的性能比 vector 更好吗?
例如:
int *p = malloc(5 * sizeof(int));
...
int *new_p = (int*) realloc(p, 10 * sizeof(int));
旧内存p会在这里释放吗?
【问题讨论】:
-
这个link 可能会有所帮助。
-
你误会了 realloc() 没有释放旧内存。
-
好的,看来我不明白
realloc的工作原理,有人解释一下吗?谢谢。 -
了解什么?有什么问题?
-
@Deqing:
realloc将尝试调整现有区域的大小。如果这不起作用,它将尝试分配一个新区域,复制旧数据然后释放旧区域。如果这也不起作用,则返回NULL(失败),但这样做不会破坏原始数据(允许调用者进行合理的恢复并可能解决问题)。跨度>
标签: c++ c memory vector realloc