计算CFStringRef / CFMutableArrayRef使用的字节数

时间:2011-09-02 15:01:26

标签: c ios macos memory-management core-foundation

我正在尝试跟踪程序中的内存使用情况,我需要知道用于字符串数据数组的总内存。

我的字符串表示为CFStringRef,我的数组是CFMutableArrayRef。

在字符串上我可以调用CFStringGetLength()来获取字符串中UTF16代码对的数量,但Apple String Storage指南说字符串可以用更压缩的格式存储[1]。假设UTF16是2个字节,这肯定会给我一个保守的上限,这是一个好的开始。

对于可变数组,我可以假设存储是(长度增加到2的幂)乘以sizeof(void *)。

有没有更好的方法来计算尺寸?是否有一个函数来获取为从CFType派生的对象分配的字节?

如果做不到这一点,我打算编写一个CFAllocator来代理我正在使用的真实CFAllocator的所有调用,但记录分配的增量。

[1] http://developer.apple.com/library/mac/#documentation/CoreFoundation/Conceptual/CFStrings/Articles/StringStorage.html#//apple_ref/doc/uid/20001179-CJBEJBHH

1 个答案:

答案 0 :(得分:0)

您可以尝试使用malloc_size()(http://www.manpagez.com/man/3/malloc_size/)来获取每个对象的分配大小。