栈·参数存储排布 发表于 2016-10-12 分类于 基础知识 基础提要:栈结构ARM内存中的栈区域是满递减的,由高地址向低地址增长,SP指针始终指向最后一个压入栈的地址,即栈顶地址。如图所示: 阅读全文 »
C语言编程题(2016年360笔试习题之病毒) 发表于 2016-09-21 分类于 习题 题目(编程题:病毒)小B最近对破解和程序攻击产生了兴趣,她迷上了病毒,然后可怕的事情发生了。不知道什么原因,可能是小B的技术水平还不够高,小B编写的病毒程序在攻击一个服务器时出现了问题。尽管成功的入侵了服务器,但并没有按照期望的方式发挥作用。 小B的目的很简单:控制服务器内存区域,试图在内存中装入从1到n之间的n个自然数,以覆盖内存区域。可能是小B对编程理解上的问题,病毒似乎没有完全成功。可能是由于保护机制的原因,内存写入只接受二进制的形式,所以十进制表达中除了0和1之外的其他值都没有成功写入内存。小B希望知道,究竟有多少数成功的写入了服务器的内存! 阅读全文 »
property 中的常用关键字分析 发表于 2016-09-08 分类于 编程语言语法 栈与堆首先,我们需要知道:为什么只有Objective-C对象需要进行内存管理,而其它非对象类型(如基本数据类型)不需要我们来管理呢? 因为: Objective-C 的对象在内存中是以堆的方式分配空间的 堆里面的内存是动态分配的,所以也就需要程序员手动的去添加内存、回收内存 OC对象存放于堆里面(堆内存要程序员手动回收,也就是 release ) 非OC对象一般放在栈里面(栈内存会被系统自动回收) 阅读全文 »
AFNetworking 3.1.0 第一部分 发表于 2016-09-06 分类于 源码解析 写在前面我主要根据作者polobymulberry的博客AFNetworking源码阅读系列来学习,因为我有很多知识不懂,所以有些地方可能会记录得过于繁琐。原作者的大体流程和记录不变,某些知识点会有自己的补充。在此非常感谢博客作者polobymulberry的分享。 阅读全文 »
(译)iOS Kernel Heap Armageddon —— Stefan Esser 发表于 2016-08-29 分类于 翻译 摘要你所了解到的关于 iOS 内核堆利用的公开研究,最终都可以归结于对内核堆空间的分配,这个观点由 nemo 首先提出来。总而言之,这种分配将空间内的内核内存分成相同大小的内存块。通过利用重写堆元数据,可以向空间的空闲列表 (freelist) 中注入任意内存区。 阅读全文 »