我正在尝试跟踪程序中的内存使用情况,我需要知道用于字符串数据数组的总内存。
我的字符串表示为CFStringRef,我的数组是CFMutableArrayRef。
在字符串上我可以调用CFStringGetLength()来获取字符串中UTF16代码对的数量,但Apple String Storage指南说字符串可以用更压缩的格式存储[1]。假设UTF16是2个字节,这肯定会给我一个保守的上限,这是一个好的开始。
对于可变数组,我可以假设存储是(长度增加到2的幂)乘以sizeof(void *)。
有没有更好的方法来计算尺寸?是否有一个函数来获取为从CFType派生的对象分配的字节?
如果做不到这一点,我打算编写一个CFAllocator来代理我正在使用的真实CFAllocator的所有调用,但记录分配的增量。
答案 0 :(得分:0)
您可以尝试使用malloc_size()(http://www.manpagez.com/man/3/malloc_size/)来获取每个对象的分配大小。