我必须执行一项繁重的任务。当我在主线程中运行它时,一切都很完美,但是当我尝试从单独的线程运行任务时,出现的错误是“现在没有可供编程的内存:不安全的调用malloc”。OS X是否限制次要线程的内存使用量?
我使用的是+[NSThread detachNewThreadSelector:toTarget:withObject:]
,并且在必要时放置了所需的自动释放池(也就是说,在开始时我分配并初始化它,然后在最后把它排空)。
我的问题是:在辅助线程中是否存在内存限制(可能堆栈内存被削减?)?我试图用仪器进行调试,但没有泄漏,应用程序崩溃。
在调用detachNewThread之前调用** autorelease **吗?如果你是这样的话,那么这个对象已经在你的主线程中自动释放了,然后你尝试从它已经离开的另一个线程访问它。 –
@MaurícioLinhares不,我不是。事实上,在应用程序中甚至没有一个电话需要-autorelease。 –
你为什么在讨论排除autorelease池的问题?这是在新的线程?在你的项目上启用NSZombie,它可能会帮助你 - > http://www.cocoadev.com/index.pl?NSZombieEnabled –