NSThread与主线程具有相同的内存权限吗?

时间:2011-07-08 23:40:49

标签: ios multithreading malloc calloc

我正在使用NSOperationQueue来管理iOS应用程序的一个阶段很长,所以我想异步管理它。在那个阶段,我通过使用直接calloc函数在C中分配大数组。 大的意思是1024x256二维浮点数和类似的东西。

如果所有内容都存在于主线程上而不是应用程序在计算时锁定,但一切都很顺利,相反,如果我将重要部分移动到NSInvocationOperation,那么我会得到许多奇怪的结果,有时我会得到调试器控制台中的一条奇怪的消息说明

  

现在没有可用于程序的内存:调用malloc不安全

所以我想知道一个操作队列管理的线程与主线程相比是否有一些不同的限制,以防万一这样做可以解决这个问题。

1 个答案:

答案 0 :(得分:1)

我知道没有任何限制..但是,你可能会遇到可用RAM的边缘。由于iOS没有虚拟内存,当内存不足时,它会向其他应用程序发送警告以释放内存。这可能是您问题的根源。

使用仪器分析您正在使用的RAM量。如果它超过大约20MB左右,那么由于内存使用过多,你很可能会被终止。