我运行一个使用jemalloc作为内存分配器的c ++程序,它将大块预分成预定义大小的小块(即1,2,4,8,......字节)
即使我要求110字节的内存分配,它也会返回一个容量为128字节的内存。
在我的程序中,我跟踪动态分配的内存量(具有高度不同的大小)并限制线程的内存分配以避免OutOfMemory崩溃。
但是,由于请求的大小与授予的实际大小之间存在差异,我无法准确计算动态分配的字节数。
是否有任何“jemalloc”API接收请求大小作为输入并提供实际分配大小作为输出?
由于
答案 0 :(得分:2)
根据文档,您可以使用malloc_usable_size()
并传递已分配的指针。
malloc_usable_size函数返回ptr指向的分配的可用大小。返回值可能大于分配期间请求的大小。 malloc_usable_size函数不是就地重新分配的机制;相反,它仅作为内省工具提供。请求的分配大小与malloc_usable_size报告的大小之间的任何差异都不应该依赖,因为这种行为完全取决于实现。
更多信息: