首页 文章

C re-alloc / malloc替代方案

提问于
浏览
1

我有一块内存,我想重新分配到不同的大小,但我不关心内存是否被丢弃 . 释放()内存然后malloc()一个新的内存块,或者realloc()是否更快?

我认为任何一种解决方案都不是最佳的,因为需要执行额外的工作 . 我认为realloc()在定位足够大的内存块方面更快,因为当前片段可能大或小到足以容纳新的内存块 . 但是,如果片段不够大,它必须复制malloc()没有的内存 .

我正在使用Linux . 这可能有一个特殊的功能吗?

谢谢! :)

3 回答

  • 1

    我会继续并相信realloc实现做正确的事情 . 同样在将来,您不应该担心内存是否被移动,重新分配等等 . 这种抢先优化是不必要的,因为大部分时间都将花费在从用户空间到内核空间的上下文切换中 .

  • 0

    如果您不关心内容,标准习语是 free ,然后是 malloc . 查找块比复制块便宜,并且无法保证 realloc 不会自行搜索 .

    在这种情况下,如果您真的关心性能,最好在目标平台和实际工作负载下对这两种解决方案进行基准测试,并查看哪种解决方案表现更好 .

  • 2

    realloc = Alloc然后复制然后释放其他解决方案是alloc和free肯定更快

相关问题