프로그램에서 메모리 사용을 추적하려고하는데 문자열 데이터 배열에 사용 된 총 메모리를 알아야합니다.CFStringRef/CFMutableArrayRef에서 사용하는 바이트 수를 계산하십시오.
내 문자열은 CFStringRef로 표시되고 내 배열은 CFMutableArrayRef입니다.
문자열에서 CFStringGetLength()를 호출하여 문자열의 UTF16 코드 쌍 수를 얻을 수 있지만 Apple String Storage 가이드는 문자열을 더 압축 된 형식 [1]에 저장할 수 있다고 말합니다. UTF16이 2 바이트라고 가정하면 이는 보수적 인 상한선을 제공 할 것입니다. 이는 좋은 시작입니다.
가변 배열의 경우 저장 용량이 sizeof (void *) 곱하기 2의 다음 제곱으로 늘린 길이라고 가정 할 수 있습니다.
크기를 계산하는 더 좋은 방법이 있습니까? CFType에서 파생 된 객체에 할당 된 바이트를 가져 오는 함수가 있습니까?
내가 사용하고있는 실제 CFAllocator에 대한 모든 호출을 프록시하지만 할당의 델타를 기록하는 CFAllocator를 작성할 계획입니다.
힌트 :'CFStringGetMaximumSizeForEncoding()'을 사용하여 다른 인코딩의 크기를 계산할 수 있습니다. 예제 사용법 : 'len = CFStringGetMaximumSizeForEncoding (CFStringGetLength (tmp), kCFStringEncodingUTF8); ' – Maciej