gpt4 book ai didi

c - C 中的内存池实现

转载 作者:IT王子 更新时间:2023-10-28 23:34:13 27 4
gpt4 key购买 nike

我正在寻找用 C 语言实现的良好内存池。

它应该包括以下内容:

  1. 抗碎片化。
  2. super 快:)
  3. 能够在某个标识符下“捆绑”多个不同大小的分配,并删除具有给定标识符的所有分配。
  4. 线程安全

最佳答案

我认为优秀的talloc ,作为 samba 的一部分开发的可能是您正在寻找的。我发现最有趣的部分是从talloc 返回的任何指针都是有效的内存上下文。他们的例子是:

struct foo *X = talloc(mem_ctx, struct foo);
X->name = talloc_strdup(X, "foo");
// ...
talloc_free(X); // frees memory for both X and X->name

针对您的具体观点:

(1) 不确定在这种情况下什么是反碎片化。在 C 中,无论如何您都不会进行压缩垃圾收集,所以我认为您的选择有些有限。

(2) 它只比普通的 malloc(3) 慢 4%,这相当快。

(3) 见上例。

(4) 只要不同的线程使用不同的上下文并且底层的 malloc 是线程安全的,它就是线程安全的。

关于c - C 中的内存池实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7060684/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com