美文网首页
iOS 指针

iOS 指针

作者: 水中的蓝天 | 来源:发表于2022-05-21 19:51 被阅读0次

所以首先我们介绍一下什么是指针?

指针其实是一个内存地址,对于一个内存单元来说,单元的地址即为指针

空指针:是一个指向空地址的指针,空指针是有效指针,值为nil、NULL、Nil或0等,给空指针发送消息不会报错,只是不响应消息而已,应该给野指针及时赋予零值变成有效的空指针,避免内存报错

野指针:是指向“垃圾”内存(不可用内存)的指针,这样的指针是不安全的,使用可能产生段错误(段错误是指访问的内存超出了系统所给这个程序的内存空间)
产生原因:指针创建时未初始化。指针变量刚被创建时不会自动成为NULL指针,它会随机指向一个内存地址。

僵尸对象:当xcode勾选zombie objects后 ,运行时系统会把所有已经回收的实例转化成特殊的“僵尸对象”,而不会真正回收他们。这种对象所在核心内存无法重用,因此不可能遭到覆写。僵尸对象收到消息后,会抛出异常,其中准确说明发送过来的消息,并描述了回收之前的那个对象。僵尸对象是调试内存管理的最佳方式

悬垂指针:指针指向的内存已经被释放了 但是指针还存在 这就是一个 悬垂指针 或者说 迷途指针

一级指针:一级指针就是指指针,里面放的就是元素的地址,我们可以通过访问元素的地址来找到该地址里存放的内容,即元素本身

二级指针:指针变量也是变量,是变量就有地址,二级指针就可以存放指针变量的地址

一级指针和二级指针的区别:

一级指针直接访问内容
二级指针间接访问内容
一级指针的内存首地址
二级指针指向一级指针地址

在MRC下,二级指针类型定义为属性、成员变量或者参数都是可行的
在ARC下,二级指针类型则不能定义为属性或成员变量,但是可以作为参数传递

关于 多级指针

转发关于空指针应用:

nil:指向一个对象的空指针,对objective c id 对象赋空值.
Nil:在iOS中,Nil完全等同于nil
Null: nil == Nil == Null 所以它们在object-c中是可以通用的
NULL:指向其他类型(如:基本类型、C类型)的空指针, 用于对非对象指针赋空值.
NSNull:在集合对象中,表示空值的对象.

nil 在Objective-C中用于id类型的对象
NSString *str = nil;
NSURL *url = nil;
id object = nil;

Nil 指向一个类的指针为空,在Objective-C中用于Class类型的对象
NULL 指向C类型的指针为空

用于对非对象指针赋空值简单举例:
int *intA = NULL;
char *charC = NULL;
struct structStr = NULL;

坏内存访问:尝试访问一个不可用内存就是坏内存访问

相关文章

  • iOS监控-野指针定位

    iOS监控-野指针定位 iOS监控-野指针定位

  • iOS 方法中 单指针和双指针的区别

    iOS 双指针 iOS 单指针,双指针在方法参数中的区别 传入单指针,在方法内会复制一个临时的指针副本,在方法内操...

  • iOS 最详细的解析(数组与指针)笔试题

    iOS 最详细的解析(数组与指针)笔试题 iOS 最详细的解析(数组与指针)笔试题

  • 4-1 内存管理

    1.内存布局 2.iOS内存管理方案 [isa指针保存了内存管理的信息] 2.iOS内存管理方案 [isa指针...

  • iOS 指针(C指针)

    运算符 & 指针变量的定义 指针与数组

  • iOS指针

    之前一直对指针变量的概念一直模模糊糊,今天查了一些资料,做个记录。 OC中的内存地址: 一:指针变量自己所在的内存...

  • IOS指针

    指针在开发中占比很重,指针还是要弄懂的 看个例子 下面来看 p *p &p 三者区别 编译器为变量a开辟内存地址,...

  • iOS 指针

    指针的定义 C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址。CPU 通...

  • iOS 指针

    可变对象与不可变对象 mutaStr 声明的是一个可变类型,mutaStr = @"123"; 将其指向了一个不可...

  • iOS指针

    OC中的内存地址:一:指针变量自己所在的内存地址(指针变量也是变量,也有内存地址)二:指针变量所指向的内容的内存地...

网友评论

      本文标题:iOS 指针

      本文链接:https://www.haomeiwen.com/subject/nxzcprtx.html