2010-01-26 102 views
3

有时项目编译的,有时它失败Xcode的iPhone构建失败,内存

“内存不足共计0字节后分配4072个字节”

如果项目编译,当它在尝试访问第一个(已分配和保留的)对象时立即启动一个错误的访问异常,或者抛出错误“无法访问内存地址xxxxxxxx”,其中xxxxxxxx是有效的内存地址。

有没有人看到类似的症状,并知道解决方法?

在此先感谢。

回答

2

如果编译或链接失败,出现内存不足的错误,它可能是两个问题之一。

首先,你的引导驱动器或者您正在构建您的源上的可用空间的驱动器(它们可以是相同的驱动器)?如果不是,则当VM子系统尝试映射文件时可能会出现该错误,或​​者更有可能在引导驱动器已满的情况下,VM子系统尝试为交换空间分配更多驱动器。其次,你的应用程序绝对是巨大的吗?即链接器是否因为试图组装非常大的东西而失败?

也有可能是系统中有一些坏RAM。尽管如此,不太可能,因为症状非常一致。

无论如何,没有更多的细节,很难给出更具体的答案。

+0

谢谢bbum。这是我们迄今为止发现的: 1) 每个{...}块的大小都有一个上限。我们的应用超过了这个将其分解为更小的块可部分解决此问题。 2) 编译器可以在单个类中编译代码时处理上限。此限制似乎与多少系统(开发平台)内存可用有关。我们通过逐渐删除大块代码并评论访问它的任何内容来建立此目标。 – McPragma 2010-01-26 19:10:31

+0

通常不容易,但幸运的是我们的应用程序体系结构支持这一点。 3) 因此,我们将应用程序类分解为更小的类。应用程序现在编译并运行调试版本。但是,它不会编译发布版本,编译器会发送如 内存不足,分配总共0字节后的1435327816字节 下一步将自行编译每个类。刚刚报告说,这是行不通的。 这太可笑了。当一个较大的块的一部分不能自行编译时编译的代码。 这不好玩 – McPragma 2010-01-26 19:10:51

+0

BBum ...对不起...忽略回答你的问题。启动驱动器具有大量的可用空间。应用程序不是巨大的...我们做得更大。坏RAM是可能的,但在其他应用程序中没有其他症状。再次感谢。 – McPragma 2010-01-26 19:20:34

0

我已经看到了这一点,它通常不是一个实际的内存错误(你的代码)...

正在发生的事情是,你有你的Xcode目标生成设置“优化级别”设置为快速,或更快,或者最快..

似乎是有一个错误的地方,将其设置为无,或尝试的操作系统,或O3(我不认为是最快的影响)..

这很可能会解决这个线程中遇到的某些问题。肯定先尝试“无”首先...这将确认这是发生在某人的情况下,看到这...

我可以告诉麦克拉格玛肯定有这个问题,因为他/她描述改变从调试到发布,这导致它(调试已被设置为无),并发布设置为别的东西......当是这种情况...确定它是特定的版本设置...