美文网首页
指针的注意点

指针的注意点

作者: 懒惰的习惯 | 来源:发表于2015-12-28 22:30 被阅读61次

1、使用指针的注意点
指针在使用过程中是需要注意一下几点的。
指针类型与指针所指的值类型需一致,不然会出现内存泄露的情况,例如
int a = 255;(1 0000 0000 - 1) // int a = 256;(2的8次方) char *b = &a;
首先a的值如果是255,那这句话这没有什么问题,关键是如果a = 256的话,那就会出现内存泄露的情况。int 在内存中所占用的位数是4位,而char是1位,1位是8个字节,一个字节放一个数字。
指针不能直接赋字节的编号,即地址值,也就是说不能指向一个未知内存中这个地址中的内容,因为有可能这个地址所表示的内容是系统必须的关键值,是拒绝访问的,因而不能直接赋字节编号。
指针不能没有被初始化,没有被初始化的指针的值是垃圾值,也就是野指针,而应用中出现野指针就会导致奔溃。

2、block有时是weak(assign),有时是strong
区分strong、weak的最重要的关键就是,这个对象(block)在我们使用的时候,是否已经被释放,而被释放的信号就是是否还有strong指针指向这个对象。
我们要时刻关心对象在创建的时候,它应该是在什么时候被销毁的,这就是ARC中的内存管理难点。例如
// 我们在使用block代替协议的时候,下一个界面中的block一定是strong修饰的,如果是assign(weak)修饰,则创建之后又没有其他的strong指向它,就会立即被释放,在下次用到的时候则出现野指针(指针指向了已经被释放掉的内存)而导致系统奔溃 @property (nonatomic, strong)block myblock;
3、block(块)的本质是什么?
一个block本质上就是一个函数指针,即那个代码快的内存地址。block常用作传值,实际上就是把block的地址传到要调用block的地方。

下一篇的重点:生成一百个单例对象,如何作内存管理?
单例对象地址不都是静态吗?所以其实就一个内存地址。
那一百个内存地址呢,如何做出有效的内存管理。

相关文章

  • 指针的注意点

    1、使用指针的注意点指针在使用过程中是需要注意一下几点的。指针类型与指针所指的值类型需一致,不然会出现内存泄露的情...

  • 【C语言笔记】<十五>指针

    指针的基本概念 指针的注意点 多级指针 指针为什么分类型

  • 指针

    指针只能存储地址值,通过指针可以对指针指向的内存进行空间进行存取操作。 指针使用注意点: 指针在数组中的使用 指针...

  • Go结构-2

    指针 普通指针 通过指针也可以间接操作指向的存储空间 指向数组的指针 可以通过指针间接操作数组 注意点:Go语言中...

  • C语言day08-12指针-注意点

    pragma mark 指针-注意点 pragma mark 概念 pragma mark 代码

  • 第09天C语言(00):笔记总结

    01-指针和数组(新) 02-指针和字符串 03-指针和字符串-注意点 04-指针数组 05-指针变量作用 06-...

  • Go语言 指针

    指针 概念 Go语言的指针和C语言一样也是用来保存地址的变量 格式 普通指针 指向数组的指针 注意点 GO语言中只...

  • C语言的指针(进阶篇章之一)

    指针运算 切记一点就是:指针的运算包括数值和类型。 一、赋值运算 在进行指针的赋值运算时,要注意的是不同类型指针虽...

  • 第十二章 类和动态内存分配(2)类的注意知识点

    (二)类的注意知识点 1.c++空指针表示方法 c++最新的空指针的表示是nullptr,以前可以给指针赋值0或者...

  • golang的相关问题(返回局部变量指针、分配原语、init、值

    golang的注意点 ==目录== [TOC] 1. 可以返回局部变量的指针 作为少数包含指针的语言,它与C还是有...

网友评论

      本文标题:指针的注意点

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