美文网首页
c/c++学习笔记2-语言基础概念

c/c++学习笔记2-语言基础概念

作者: scott_yu779 | 来源:发表于2017-11-16 09:16 被阅读0次

父函数进入子函数前后发生到底发生了什么

引用
https://www.cnblogs.com/bangerlee/archive/2012/05/22/2508772.html

  • 基础:
    理解以下总结性概念之前,请阅读下上面引用的帖子
    每个进程都有一个对应于用户态的栈区,栈区内部根据函数划分栈帧,栈底xbp(32位x=e,64位x=r),从上往下增长的栈区,栈顶位xsp,在函数进入和退出的之间 xbp和xsp之间,是属于函数的栈帧区域
  • 进入子函数,C/c++语言函数参数压栈顺序从右到左
    原因:

http://blog.csdn.net/jiange_zh/article/details/47381597

  • 进入子函数,父函数中的局部变量原来是存储在堆区的,那么需要压入栈区
    子函数退出后,再恢复现场,所以将局部变量的地址传入子函数,子函数操作的指针
    已经不是原来的局部变量所在地方了但是退出的时候,恢复现场后,地址还是对应的,这个回复现场后是否对应地址我觉得跟堆区地址是否被占用有关系,默认情况下,只要堆区资源还在,应该是恢复到原来地址

  • 局部变量的地址都存储在栈帧区域中

  • 子函数退出后,那么属于子函数的局部变量被释放,是因为子函数结束后,整个栈帧都被释放了,所以局部变量自然也就没有生命了

  • return的本质就是把父函数的内存地址的下一条指令给ip寄存器

变量存储本质

  • 全局变量和静态变量存储在内存静态区

类是如何承载面向对象的实现

类的基础概念

相关文章

网友评论

      本文标题:c/c++学习笔记2-语言基础概念

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