Я пытаюсь отслеживать использование памяти в моей программе, и мне нужно знать общий объем памяти, используемой для массива строковых данных.
Мои строки представлены как 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