2017-01-23 45 views
0

我运行使用jemalloc作为内存分配器哪个预分割大块成预定义尺寸的小块(C++程序即1,2,4,8,.. 。字节)获取每存储器分配箱的尺寸在jemalloc

即使我要求110个字节的存储器分配,它返回与128个字节容量的存储器。

在我的程序,我跟踪动态分配的存储器(具有高度多样化的大小)的量,并限制线程的存储器分配,以避免内存不足崩溃。

然而,由于要求的尺寸,并给予实际尺寸之间的差异,我不能准确计算动态分配的字节的数量。

是否有接收请求大小作为输入,并提供了一个实际的分配大小作为输出的任何“jemalloc” API?

感谢

回答

1

按照文档,就可以使用malloc_usable_size()和传递您的分配指针。

malloc_usable_size函数返回由ptr指向的分配的可用大小。返回值可能大于分配期间请求的大小。 malloc_usable_size函数不是in-place realloc机制;相反,它只是作为一种内省目的的工具。所请求的分配大小与malloc_usable_size报告的大小之间的任何差异都不应该依赖,因为此类行为完全取决于实现。

更多信息:

+0

是的,我已经阅读它。然而它说:“所请求的分配大小与malloc_usable_size报告的大小之间的任何差异不应该依赖,因为这样的行为完全取决于实现。”所以我怀疑它 – syko