- 内存泄露
内存泄露是指我们在开发过程中当栈中的指针消失以后,堆中的内存还存在的情况 - 野指针
野指针指的是堆中的内存消失了,但是指向他的指针还存在在栈中的情况 - 指针释放
就是把指针指向一个空地址 - weak工作原理
Runtime会对weak属性进行内存布局,构建hash表:以weak属性对象内存地址为key,weak属性值(weak自身地址)为value。当对象引用计数为0 dealloc时,会将weak属性值自动置nil。
/**在开发中
如果函数中有creat new copy 默认都会开辟堆空间
也就是调用malloc 方法
**/
CFRunLoopObserverRef observer;
// 不能使用
free(observer)
/*不能使用这个方法取消,
因为可能再次开辟堆控件,
因为他不知道是否会有结构体,
就可能会引起内存泄漏*/
//有可能开辟一些非ARC的内存空间
CFRelease(observer) // 和dealloc类似
-
一个函数调用自身函数就会引起堆栈内存溢出
-
函数调用栈
调用函数的时候我们首先会减sp内存器,栈内存开辟一段空间,调用完成之后就会加内存器,之后把栈空间取消了 -
runtime运行时
/**
OC方法由那几个部门:
SEL:方法编号
IMP:方法实现(指针)
**/
网友评论