8

关于我最近遇到的一个名为zmalloc. (事实上​​,这只是zmalloc关于 SO 的第三个标签问题)。

我收集了以下内容:

  • zmalloc 自动跟踪并释放未释放的内存,类似于 C++ 智能指针。
  • zmalloc 显然启用了一些指标,至少在redis source 的情况下

所以我的问题是:

  1. 那么,在使用 zmalloc 而不是 malloc 时会失去什么灵活性?即 malloc 继续提供 zmalloc 没有的哪些好处?
  2. zmalloc 在 C11 中是非标准的吗?这是自定义功能吗?
4

1 回答 1

13

看起来 zmalloc 是 redis-tools ( https://github.com/antirez/redis-tools ) 的一部分。redis 是一种将内容保存在内存中的数据库(http://redis.io/)。

通常开发 malloc 替换是因为某些目标系统不提供合适的 malloc,或者因为调用者需要额外的功能。我认为 zmalloc 是系统 malloc/free 的一个非常简单的包装器,只是跟踪分配的整体内存。不涉及自动免费。您指出的帖子还解释了需要:可以将数据库配置为不使用超过一定数量的内存,因此需要跟踪整体消耗。

于 2014-03-29T10:39:26.757 回答