线程和进程的定义 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行进程要想执行任务,必须得有线程,进程至少要有一条线程程序启动默认会开启一条线程,这条线程被称为主线...
线程和进程的定义 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行进程要想执行任务,必须得有线程,进程至少要有一条线程程序启动默认会开启一条线程,这条线程被称为主线...
总结 普通指针是值拷贝对象指针是二级指针数组指针指向的是数组的首地址,也是数组的第一个元素的地址数组的内存平移实际是在数组的首地址的基础上加数组内元素类型的大小即步长 问题 ...
通过x/4gx YDPerson.class 发现类也是有数据结构有内存对象的内存里会存储很多的值像isa、成员变量,那么类会存储些什么?YDPerson是一个类,而类在底层...
由于Swift是一门静态语言,对于相应数值的传递、响应的回调、通讯等系列会有一定的影响,不像Objective-C具备运行时机制能够动态的传递发送消息这么灵活,而RXSwif...
通过isa分析到元类我们有了对象的isa指向类,类的isa指向元类的走位,那元类的isa呢? 通过案例测试发现YDPerson对象的isa指向了类,类的isa指向元类,元类的...
通过isa推导class我们分析类isa存储了类信息,我们是否可以对Class的地址再取isa的操作呢? 通过案例我们发现对isa的地址再进行x/4gx时也可以获取到里面的地...
通过案例验证了类和对象进行关联是通过isa来进行的,在案例中对isa取ISA_MASK就可以得出类的地址,由于isa默认是nonPointerIsa,而非纯的isa指针数据是...
由于通过alloc出来的是一个对象,所以在调用init时执行的是init的对象方法 通过alloc底层源码知道了init内部调用了_objc_rootInit,然后直接将ob...
通过案例可得出结构体struct1在存储布尔类型的4个成员变量时需要用到4个字节即32位,而这里的每一个成员变量均可用0或1来代理,那么在成员变量后添加位域指定变量占用的位数...
在malloc的篇章里我们知道了calloc后系统根据实例变量的大小进行16字节对齐后返回了一个创建对象所需大小的内存地址,并在alloc底层源码的最后赋值给了obj,而ob...
首先要了解一下clangClang 是一个C语言、C++、Objective-C语言的轻量级编译器。源代码发布于BSD协议下。Clang将支持其普通lambda表达式、返回类...
进入到malloc_size的实现,发现只有malloc.h文件中对malloc_size的声明找不到实现,但可以发现这个文件属于usr/include/malloc/,说明...
内存对齐的原则 数据成员对齐规则:结构体(struct)(或(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小...
通过以上案例得出以下结论 对象的内存影响有成员变量和属性,而方法不会影响对象的内存大小,而属性和成员变量之间相差的就是getter和set方法,最终可得到影响对象内存大小的是...
作为一名程序员,对于原理的探究必不可少,往往可以解决很多疑惑,例如Block您真的够了解吗?Block编译后的结构是什么?Block捕获变量又是怎样的?变量捕获后又分别做了什...
在alloc的底层源码探索过程中发现了callAlloc被调用了两次,带着疑惑,在初始化YDPerson时下了一个断点,并开启查看汇编模式 通过上图汇编发现在断点处调用的符号...
alloc 底层原理探究 要想探索objc的底层原理,首先得初始化对象 总结 alloc开辟了内存空间 init没有对指针进行操作(指针p1、p2、p3指向了同一片内存区域)...
OpenGL (Open Graphics Library) 一个跨平台编程语言,跨平台的编程图形程序接口,它将计算机的资源抽象为一个个OpenGL的对象,对这些资源的操作抽...
一、准备资源 libGLTools.a CLTools glew 为方便大家,这里我已上传到网盘中,网盘地址[https://pan.baidu.com/s/11Ym7Owc...