Кто-нибудь знает, почему я получаю SIGSEGV, так как объект superpoweredReverb удаляется?SIGSEGV с SuperpoweredReverb
int size = 3056;
SuperpoweredReverb* superpoweredReverb = new SuperpoweredReverb(44100);
superpoweredReverb->enable(true);
float* buffer = new float[size * 2];
superpoweredReverb->process(buffer, buffer, size);
delete(superpoweredReverb); // <-- error SIGSEGV
delete[](buffer);
Если размер 16, 32, 64 или 1024, все работает нормально. Но с помощью других кратных 8, как 1032, 2048 или 4096, я получаю следующее сообщение об ошибке:
- A/Libc: неверный адрес или адрес коррумпированной блока 0x63647000 передается dlfree
- A/LibC: Fatal сигнала 11 (SIGSEGV) в 0xdeadbaad (код = 1), резьба 7148 (Thread-4888)
Я использую Superpowered SDK для автономной обработки с помощью приложения android. Я был бы благодарен за любую помощь.
Вы знаете, что ваш буфер ввода содержит недопустимые поплавки? Не уверен, что это проблема, но я бы добавил в нее некоторые действительные значения. –
Или 'float * buffer = new float [size * 2] {};' для инициализации float до 0. Или вызов 'superpoweredReverb-> process (nullptr, buffer, size)' – kfsone
Кроме того, это ваш фактический код или это псевдо-макет того, что делает ваш реальный код? То есть действительно ли проблема проявляется с размещенным точным кодом? – kfsone