gpt4 book ai didi

计算 CFStringRef/CFMutableArrayRef 使用的字节数

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:24 27 4
gpt4 key购买 nike

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

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

在字符串上,我可以调用 CFStringGetLength() 来获取字符串中 UTF16 代码对的数量,但 Apple 字符串存储指南说字符串可以以更多压缩格式存储 [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

最佳答案

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

关于计算 CFStringRef/CFMutableArrayRef 使用的字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7285362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com