c++ - 带有 SuperpoweredReverb 的 SIGSEGV

标签 c++ android-ndk superpowered

有人知道为什么我一删除 superpoweredReverb 对象就会收到 SIGSEGV 吗?

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

我正在使用 Superpowered SDK 通过 Android 应用程序进行离线处理。如果有任何帮助,我将不胜感激。

最佳答案

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

关于c++ - 带有 SuperpoweredReverb 的 SIGSEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39580564/

相关文章:

java - Android NDK java.lang.UnsatisfiedLinkError 错误

c++ - 我可以在程序中定义的函数上使用 execvp() 吗?

c++ - 我可以依靠编译器查找和优化简单的 bool 循环不变量吗?

java - JNI 环境指针

android - 在 Android.mk 中使用 $(warning) 会在 Eclipse 中显示错误。我怎样才能解决这个问题?

android - 使用 Superpowered sdk 静音左/右音频效果

java - 显然,如果已经存在很多 AssetFileDescriptors,则在 native 端的 Android 上创建文件会失败

android - Superpowered SDK尝试同时录制和播放

c++ - Linux c++ 可移植二进制问题

c++ - 如何在不包含 Windows.h 的情况下获得 DebugBreak 的声明?