错误原因:
exc_bad_access(code=1, address=0x789870)野指针错误,主要的原因是,当某个对象被完全释放,也就是retainCount,引用计数为0后。再去通过该对象去调用其它的方法就会出现野指针错误。
例如:
Person *jerry = [[Person alloc]init]; // retainCount引用计数为1
[jerry eat];...
分类:
移动开发 时间:
2014-07-22 23:05:16
阅读次数:
372
memset与NULL区别NULL与0
的区别为什么强调一个malloc对应一个free在一个结构体malloc,然后free,但是她的成员变量的malloc并没有free,还需要特别的free在全局变量的指针声明中,被设置为NULL,指针不是野指针=========================...
分类:
其他好文 时间:
2014-06-16 06:33:34
阅读次数:
701
内存管理 2014年5月21日僵尸对象:指向已经删除的对象内存空间
分类:
移动开发 时间:
2014-06-02 17:24:40
阅读次数:
542
前文我们已经说了内存管理的原则:只要出现了new alloc retain
,就一定会配对出现一个release,autorelease那么当我一个对象被释放之后,如果我们再次调用这个对象的方法(包括这个对象的retain
release方法),将会出现 野指针 错误,在xcode中具体表现为EXC...
分类:
其他好文 时间:
2014-05-28 17:05:55
阅读次数:
259
C语言中常见的内存错误与解决方法,并举例说明...
分类:
编程语言 时间:
2014-05-21 14:59:09
阅读次数:
245
当我们对于内存进行手动管理的时候,会出现两种错误:一种是野指针错误,一种则为内存泄露.这两点也是我们去管理内存时最终要解决的问题.
内存泄漏是指:不在使用的对象,一直保留在内存中未被销毁,一直占有着内存,耗费内存资源直至程序结束.
野指针则是指:当一个指针指向一个对象时,此对象已经被系统回收...
分类:
其他好文 时间:
2014-05-17 21:10:52
阅读次数:
1122
空指针究竟指向了内存的哪个地方?
如果仅仅声明一个指针,而没有任何赋值,那么这个指针是野指针,它会指到VM的任何位置,碰到异常操作,比如对只读区写操作,就会引起硬件中断产生core,也就是通常的段错误。
良好的编程风格是将指针永远都可控,也就是这个指针的地址,程序可控,通常,对于不使用或初始的指针都将其地址置为0,这是约定俗成的,就如同,我们经常使用的进制一样,你非用一个别人都不用的进...
分类:
编程语言 时间:
2014-05-15 07:04:34
阅读次数:
241
众所周知,C++中对堆内存的申请与释放完全由用户来控制,这就造成用户在使用的时候经常造成内存泄漏、野指针、重复释放等常见的挂掉问题,所以我们有必要提供一套机制,使得用户只需申请相应的内存,不用管释放的问题,其实这属于著名的RAII(Resource
Acquisition Is Initialization)
技术 。在C++中这种技术称作“智能指针”,C++中的智能指针技术越来越受到广泛应...
分类:
编程语言 时间:
2014-05-13 11:37:49
阅读次数:
358
---------------------- IOS开发、Android培训、期待与您交流! ----------------------
一、autorelease
autorelease与release相似,是OC中的一个对象方法。这两个方法都能把对象的引用计数器减1,但是release是一个精确的减1,对对象的操作只能在release之前进行,如果是在之后,就会出现野指针错误;而auto...
分类:
其他好文 时间:
2014-05-12 06:19:57
阅读次数:
354