什么时候会在zmalloc上使用malloc?

时间:2014-03-29 10:15:53

标签: c malloc zmalloc

关于我最近遇到的一个名为zmalloc的函数,在线或关于stackoverflow的信息很少。 (事实上​​,这只是关于SO的第3个zmalloc标记的问题。

我收集了以下信息:

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

所以我的问题是:

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

1 个答案:

答案 0 :(得分:10)

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

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