Ios NSThread是否具有与主线程相同的内存权限?

Ios NSThread是否具有与主线程相同的内存权限?,ios,multithreading,malloc,calloc,Ios,Multithreading,Malloc,Calloc,我正在使用NSOperationQueue来管理iOS应用程序的一个阶段,这个阶段相当长,因此我希望异步管理它。在该阶段中,我通过直接使用calloc函数在C中分配大数组。 对于big,我指的是1024x256个二维浮点数数组和类似的东西 如果所有内容都驻留在主线程上,而应用程序在计算时会锁定,但一切正常,如果相反,我将较重的部分移动到NSInvocationOperation中,那么我会得到许多奇怪的结果,有时我会在控制台中收到一条奇怪的消息 现在没有可用于编程的内存:调用malloc不安全

我正在使用
NSOperationQueue
来管理iOS应用程序的一个阶段,这个阶段相当长,因此我希望异步管理它。在该阶段中,我通过直接使用
calloc
函数在C中分配大数组。 对于big,我指的是1024x256个二维浮点数数组和类似的东西

如果所有内容都驻留在主线程上,而应用程序在计算时会锁定,但一切正常,如果相反,我将较重的部分移动到
NSInvocationOperation
中,那么我会得到许多奇怪的结果,有时我会在控制台中收到一条奇怪的消息

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


所以我想知道,与主线程相比,由操作队列管理的线程是否有一些不同的限制,以及如何更好地解决这个问题。

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


使用仪器来分析您正在使用的RAM数量。如果超过20MB左右,您可能会因为内存使用过度而面临被终止的危险

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

使用仪器来分析您正在使用的RAM数量。如果超过20MB左右,您可能会因为内存使用过度而面临被终止的危险