我有一个 iOS 应用程序,可以直接从相机处理来自 captureOutput 的视频帧。作为处理的一部分,我在另一个源文件中调用了几个 C 函数。我将 UIImages 转换为原始数据并快速传递这些数据——所有处理都在与视频输出相关的队列上完成。
在某种程度上,这似乎工作正常。当我传递的数据变得太大并且在 C 函数的初始化阶段弹出看似随机的 EXC_BAD_ACCESS 错误时,我似乎遇到了一个限制。通过初始化我的意思是,声明小的静态数组并将它们设置为零等。
我想知道我是否在传递大量数据时达到了某种堆栈限制,因此尝试使用其他链接器标志和-Wl,-stack_size 来增加堆栈大小,但这似乎没有什么不同。
以这种方式从非 UI 线程调用 C 函数还有什么我应该注意的吗?
抱歉有点笼统,但我无法发布代码的细节,我正在寻找针对这种情况的一般建议和技巧。
一些进一步的信息——我们在 Objective-C 的视频处理端释放内存和使用自动释放池时遇到了问题(因为我们在不同的线程上推荐)——也许我们在 C 代码中遇到了同样的困难。有没有办法增加在 C 中执行释放/释放的频率,或者我只是在追逐我的尾巴?