我有一个 ARM 应用程序,偶尔会收到数据中止或预取中止崩溃报告
__rw::__rw_deallocate(void*, unsigned int, int)
在栈顶。这个功能是什么,谁拥有它? Google 发现了与此函数相关的各种链接器和构建错误,但我的问题是运行时崩溃。我在我的应用程序中同时使用了 boost 和 std 库。
最佳答案
它看起来像是堆函数(malloc、free 等)的实现细节(__*
是库保留名称)。
它在那里崩溃的事实通常意味着你调用了 Undefined Behaviour通过做
- 一次免费
- 一个未初始化(终止)的指针
- 你有做这些事情的竞争条件
等等
是否涉及线程? (检查你的锁定)
如果不是,检查越界寻址、未初始化的变量访问等。
像 valgrind
这样的工具在这里非常有用。
关于c++ - 什么是 __rw::__rw_deallocate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30385430/