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

我收集了以下内容:

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

  • 所以我的问题是:
  • 在使用zmalloc而不是malloc时,会失去什么灵活性?即malloc继续提供zmalloc不提供的好处?
  • Zmalloc在C11中是非标准的吗?这是自定义功能吗?
  • 最佳答案

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

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

    关于c - 什么时候可以在zmalloc上使用malloc?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22729730/

    10-16 11:20