Кто-нибудь знает, почему я получаю 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: Фатальный сигнал 11 (SIGSEGV) по адресу 0xdeadbaad (код = 1), поток 7148 (Thread-4888)
Я использую Superpowered SDK для автономной обработки с помощью приложения для Android. Буду благодарен за любую помощь.
float* buffer = new float[size * 2] {};
для инициализации поплавков до 0. Или вызовитеsuperpoweredReverb->process(nullptr, buffer, size)
- person kfsone   schedule 19.09.2016new
, особенно для вещей, которые абсолютно не нужны, таких какSuperpoweredReverb
? Похоже, вы пишете код на Java, а не на C++.SuperpoweredReverb superpoweredReverb(44100);
это все, что вам нужно. - person PaulMcKenzie   schedule 19.09.2016new
/delete
, я получаю ту же ошибку, как только функция возвращается. Я открыл новую проблему на github: github .com/superpoweredSDK/ Надеюсь, создатели SDK знают об этом. @kfsone: это не мой настоящий код, но выполнение приведенного выше примера кода приводит к той же ошибке. - person Sebastian   schedule 20.09.2016