Очень длинный тэг ID3v2

221
18 сентября 2017, 04:18

Читаю на с++ 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 в другом файле по аналогичной причине.

READ ALSO
Точность алгоритма Ray Casting(OpenGL)

Точность алгоритма Ray Casting(OpenGL)

Пытаюсь сделать выбор обьектов с помощью Ray CastingКогда жму мышкой в окне создается луч который показывает куда направляется вектор

217
Проблема с классами

Проблема с классами

Допустим у меня есть класс TTable с конструктором TTable (TRow это другой класс, с ним все работает)

211
Mysql быстрая сортировка по ФИО

Mysql быстрая сортировка по ФИО

Есть табличка - 1млн человек, есть разные данные, внешние ключи и тдНеобходимо быстро (насколько это возможно) выбрать из таблички данные,...

383