2021-05-18

程序在调用某个函数时,会先将传入的参数,调用该函数的原函数的数据地址(IP),对可能改变的寄存器进行存储压入之后进行数据区域的开辟。开辟的方式为sub rsp X

结构体和联合体的区别,结构体中声明的内容各自有各自的储存空间,而联合体中的数据空间则是联合体内最大的数据空间需求。故而联合体内部数据的位模式是相同的,但其使用不同的数据模式,则表达出的值是不同的。

数据的对齐:动机—>通过数据对齐的方式,减少内存读取时的判断。比如int数据则存放在偏移位置为4的倍数的内存中,当偏移位置不为4时,则留出该部分,继续从尾部压入。故而为了减少内存的空余损失,我们使用先进大内存需求的数据,再进小内存需求的数据的方式减少内存的空余。

!!!指针指向的数组,需要考虑其是否有值。即int (*p)[5],此时p = nullptr,需要对其进行new一个内存. p = new int[5];

堆的分配是动态的,由低地址往高地址寻找可容空间,堆的无限申请空间会导致溢出

攻击手段:使用栈空间的缓冲区溢出情况,覆盖返回的IP地址,进行可执行文件的插入,进而运行黑客自己的代码。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 内置对象 对象分三种 : 自定义对象、内置对象、浏览器对象 Math Date Array String 2...
    黑云阅读 137评论 0 1
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,387评论 0 6
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,465评论 0 35
  • 1.写一个NSString类的实现 +(id)initWithCString:(c*****t char *)nu...
    韩七夏阅读 3,810评论 2 37
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,606评论 28 53