SIGSEGV与SuperpoweredReverb

时间:2016-09-19 19:21:15

标签: c++ android-ndk superpowered

有人知道为什么我会将superSoweredReverb对象删除后的SIGSEGV作为soons吗?

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:传递给dlfree的损坏块0x63647000的无效地址或地址
  • A / libc:0xdeadbaad(代码= 1),线程7148(Thread-4888)
  • 的致命信号11(SIGSEGV)

我正在使用Superpowered SDK与Android应用程序进行离线处理。我会感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

似乎是sdk中的一个错误。对SuperpoweredReverb使用缓冲区大小&lt; = 1024,直到它被修复。 见https://github.com/superpoweredSDK/Low-Latency-Android-Audio-iOS-Audio-Engine/issues/168