我正在研究通过网络处理视频数据的 android NDK 中的 pthread。
我遇到了“检测到堆栈损坏:中止”的问题。所以我在 application.mk 中设置了 -fstack-check,并再次设置了 FATAL SIGNAL 11 blabla..。
我在这个问题上的结论是关于堆栈大小。
当我使用窗口线程时,它的堆栈大小默认设置为 1kb,自动增加。
但是,我不知道pthread。
pthread 会自动增加堆栈大小吗?
ps 我将此线程附加到 JavaVM。
我正在研究通过网络处理视频数据的 android NDK 中的 pthread。
我遇到了“检测到堆栈损坏:中止”的问题。所以我在 application.mk 中设置了 -fstack-check,并再次设置了 FATAL SIGNAL 11 blabla..。
我在这个问题上的结论是关于堆栈大小。
当我使用窗口线程时,它的堆栈大小默认设置为 1kb,自动增加。
但是,我不知道pthread。
pthread 会自动增加堆栈大小吗?
ps 我将此线程附加到 JavaVM。
在现有的 Android 上,pthread 堆栈默认分配为 1MB。(由于系统的工作方式,只有实际接触到的堆栈部分才能获得物理页面,因此对于许多线程而言,实际上只有几 KB 正在使用。)
“堆栈损坏”消息表明有东西破坏了堆栈,而不是你已经跑完了。遇到这种情况的一种方法是注销堆栈分配数组的末尾。解码您在日志文件中获得的堆栈跟踪并查看它在失败时使用的方法可能很有用。