0

使用 TCMalloc - 给定堆分配的对象,有没有办法获得对象的分配大小(仅表示 malloc 调用中传递的大小)?我要求一种“可靠”的方法(即,假设分配大小存储在指针之前,则不返回字长)

4

1 回答 1

3

从 1.6 版开始,TCMalloc包括

size_t tc_malloc_size(void*);

它返回从参数开始的分配的可用大小。

它与 glibc malloc_usable_size(或 BSD's malloc_size)相同,并libtcmalloc包含这两个函数的别名。

但是,它不一定是最初请求的大小。它可能更大(通常是)。我不相信 TCMalloc(或大多数其他 malloc 实现)保留该元数据,因此(afaik)既不可靠也不可靠的机制可以时间返回原始 malloc 调用并检查请求大小。

于 2018-03-14T16:29:59.300 回答