Примите следующий код:SecVerifyTransformCreate утечка памяти?
// init
CFDataRef signature = CFDataCreate(...);
CFDataRef pubKeyData = CFDataCreate(...);
CFArrayRef array = NULL;
OSStatus res = SecItemImport(pubKeyData, ..., &array);
SecKeyRef pubKey = (SecKeyRef) CFArrayGetValueAtIndex(array, 0);
// everything goes wrong here
SecTransformRef verifier = SecVerifyTransformCreate(pubKey, signature, NULL);
// release
CFRelease(signature);
CFRelease(pubKeyData);
CFRelease(signature);
CFRelease(verifier);
Короче: я импортировать открытый ключ и подпись из файла, создавая верификатор для этой подписи. На последующих строках кода я могу успешно проверить подпись.
Что меня волнует утечка памяти, возникающая при вызове метода SecVerifyTransformCreate. Если я прокомментирую эту строку, утечка исчезнет.
Я прочитал все о создать правила и получить правила, и я думаю, что у меня есть высвобождает выяснили.
Как вы установили, что есть утечка памяти? Это просто, что использование памяти приложения идет вверх, или вы собираете это с помощью инструментария? – Frank
Использование памяти приложения увеличивается. Я проверил эту часть кода в цикле, чтобы проверить. Я также проверил с профайлером Xcode (точнее, утечками), который показал, что на самом деле есть утечка по 320 байт на каждую итерацию. Когда строка закомментирована, использование памяти остается неизменным. – honza42
Вы должны быть осторожны в использовании памяти, как сообщается ОС. Распределители памяти часто будут зависеть от выпущенной памяти для последующего повторного использования, поэтому увеличение этой метрики не обязательно означает утечку. При этом, если профайлер сообщает об утечке, то это действительно касается. – Frank