Читаю на с++ id3v2 тэги mp3 файла. В какой-то момент появляется тэг APIC, у которого размер фрейма слишком велик для помещения в память. Программа крашится, как это обойти? Читаю тэги так в цикле:
char input[4];
file.read(input, 4); //название тэга
cout << input << " ";
delete[] input;
input = new char[4];
file.read(input, 4); //длина тэга
unsigned int length = (int)input[0]*2097152 + (int)input[1]*16384 + (int)input[2]*128 + (int)input[0];
delete[] input;
input = new char[2];
file.read(input, 2); //флаги
delete[] input;
input = new char[length]; // здесь ошибка из-за очень большого length (больше размера файла - 4Гб)
file.read(input, length);
cout << input << endl;
Ошибка появляется нетолько на APIC, но и на PRIV в другом файле по аналогичной причине.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости