有意创建EXC_BAD_ACCESS

时间:2014-03-18 18:46:19

标签: objective-c debugging exception crash exc-bad-access

我想和EXC_BAD_ACCESS一起学习调试它,并发现创建这种情况相当困难。

我希望在Scheme

中看到“Enabeling Zombie Objects”的使用

什么时候需要它?

甚至没有这项工作 - 将构建设置设置为不使用ARC:

myobj *m = [[myobj alloc] init];
[m release];
[m dealloc];

 m = nil;
[m hello];

一些非常好的建议,如:

int * array = (void *)0xDEADBEEF;
    array[2] = 10;

它只会让Xcode停止在线路上说不好的访问,我需要更糟: - )

我已经看到它最终出现在main.m中的情况,它是最难调试的。你能创建一个吗?

3 个答案:

答案 0 :(得分:3)

试试这个

- (void) badAccess
{
    void (*nullFunction)() = NULL;
    nullFunction();
}

答案 1 :(得分:0)

EXC_BAD_ACCESS表示您正在尝试访问您不允许的内存。在这种情况下,几乎任何指向任意地址的指针都会双倍地引发这个异常:

NSString * s = (__bridge id)(void *)0x8BADF00D;
[s uppercaseString];

或者

int * array = (void *)0xDEADBEEF;
array[2] = 10; 

我不确定这对练习有多大帮助;我认为发生的事情太明显了,但如果你愿意,那就是你如何做到的。

答案 2 :(得分:0)

我认为你可以使用strcmp(0, "");