美文网首页
程序载入过程

程序载入过程

作者: xiaobing | 来源:发表于2017-05-06 22:15 被阅读0次

说明

程序在执行main函数之前究竟会干些什么?全局变量是怎么来得?堆是怎样的及堆的生命周期。

解释

大家都知道main函数是程序的入口,可是main函数执行的时候那些全局变量,静态变量是怎么来的呢?
要回答这些问题,我们需要了解一下,这些东西在内存中保存在哪里?其实点击exe执行时,操作系统会把程序和资源载入内存,先完成资源初始化,包括全局变量、字符串常量等然后再分配栈空间并跳转到main函数执行。
其中就包含一个一个的节(节可以理解为一段内存),其中一个节就是用来保存全局变量的,如果全局变量有初始值那么载入后就已经初始化了,如果没有初始值,那么就分配相应的空间。由上面的解释我们可以知道这些节并没有在栈区,栈还没分配,这些节就已经存在了。那么可以知道函数调用后,栈区释放了对这些节没有任何影响,所以可以知道这些节并不会消失,全局变量所在的节又被称为堆区(堆其实就是一段内存),所以堆的生命周期就是一直到程序结束,同样 全局变量的生命周期也是如此。

相关文章

  • 程序载入过程

    说明 程序在执行main函数之前究竟会干些什么?全局变量是怎么来得?堆是怎样的及堆的生命周期。 解释 大家都知道m...

  • 操作系统(三)——内存管理

    (一)程序执行过程 1.程序从外存载入内存 用户源代码以程序的形式存放在外存上,需要运行时通过三步将程序载入到内存...

  • MVC模式APP启动过程和控制器生命周期

    MVC模式:这张图很经典!相信好多人都见过了:用心去体会! app程序启动过程: 1 载入程序到内存 2 在mai...

  • Linux下动态库(.so)和静态库(.a) 的区别

    二者的不同点在于代码被载入的时刻不同。 静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大。 动态库(共...

  • GDB常用命令

    1、file载入调试程序,同时加载符号表 2、core-file载入core dump程序映像,gdb命令行参数形...

  • 复盘 SUCTF 2019 Reverse

    Reverse SignIn exeinfope 载入查壳。一个64位的ELF程序,无壳。 先来静态分析一波,载入...

  • iOS应用生命周期

    1、应用程序载入后 - (BOOL)application:(UIApplication *)applicatio...

  • 程序编译原理小析

    编译过程的最终产品是可执行程序——由一组机器语言指令组成。运行程序时,操作系统将这些指令载入到计算机内存中,因此每...

  • 与OpenCV的第二天

    第一件事:简单程序上手 1. 第一个程序:图像显示 图像显示过程十分简单,只需 imread 函数载入图像到数据结...

  • android调用native函数流程

    native调用流程 载入so库 执行上述代码时,程序通过JVM载入这个libtest.so文件;与此同时它会产生...

网友评论

      本文标题:程序载入过程

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