Читаю на с++ 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 в другом файле по аналогичной причине.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники