线程1:程序接收信号:"EXC_BAD_ACCESS"



我目前正在为我的成熟度研究编写一个iphone应用程序。但有一个行为我不明白:有时当我编译我的项目有:

线程1:程序收到信号:"EXC_BAD_ACCESS".

但是当我第二次或第三次编译相同的代码时,代码就运行得很好,我不知道为什么。我使用一些MonteCarloSimulation,但是当它失败时,它会失败执行前100个模拟中的一个。但是当一切都运行良好时,它执行了100万次模拟而没有错误…真的很奇怪,不是吗?

你知道吗?这是Xcode或arc的问题吗?其他一切都很完美。你还需要进一步了解吗?我也可以把我的代码发邮件给你

这通常意味着您正在尝试访问一个已经被释放的对象。

为了调试这些东西,Objective C使用了一个叫做"NSZombie"的东西,它会保持那些对象在周围,所以你至少可以看到试图被调用的是什么。有关如何使用它的详细信息,请参阅这个问题

这通常是由于访问一些已损坏的内存引起的,很可能您有对已删除对象的引用。很多时候,你可能会发现对象所在的内存还没有被覆盖,所以当你试图访问内存时,你的数据仍然是完整的,没有问题,因此它在某些时候工作。

另一种情况是,你有一些代码写到内存使用一个坏的引用,所以你写到一个区域,你不应该。根据程序启动时的内存布局,这可能在某些时候没有影响,但在其他时候会导致一些灾难性的事情。

最新更新