2

我运行一个使用 jemalloc 作为内存分配器的 c++ 程序,它将大块预先划分为预定义大小的小块(即 1、2、4、8、...字节)

即使我要求分配 110 字节的内存,它也会返回一个容量为 128 字节的内存。

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

但是,由于请求的大小与授予的实际大小之间存在差异,我无法准确计算动态分配的字节数。

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

谢谢

4

1 回答 1

3

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

malloc_usable_size 函数返回 ptr 指向的分配的可用大小。返回值可能大于分配期间请求的大小。malloc_usable_size 函数不是就地重新分配的机制;相反,它仅作为自省的工具提供。不应依赖请求的分配大小和 malloc_usable_size 报告的大小之间的任何差异,因为这种行为完全取决于实现。

更多信息 :

于 2017-01-23T05:16:56.227 回答