zoukankan      html  css  js  c++  java
  • main函数执行前、后再执行的代码

    一、main结束 不代表整个进程结束
      (1)全局对象的构造函数会在main 函数之前执行,
              全局对象的析构函数会在main函数之后执行;
              用atexit注册的函数也会在main之后执行。
      (2)一些全局变量、对象和静态变量、对象的空间分配和赋初值就是在执行main函数之前,而main函数执行完后,还要去执行一些诸如释放空间、释放资源使用权等操作
      (3)进程启动后,要执行一些初始化代码(如设置环境变量等),然后跳转到main执行。全局对象的构造也在main之前。
    二、main()之后执行的代码,用atexit注册的函数也会在main之后执行

    C++中,全局对象的构造函数会在main 函数之前执行。

    在大多数的实现方式里,核心会运行专门的启动代码,启动代码会在启动main()之前完成所有的初始化工作,这其中当然包括了全局对象的初始化。这个所谓的启动代码就是Runtime函数库的Startup代码。
    在程序执行时,系统会先调用Startup,完成函数库初始化、进程信息设立、I/O stream产生,以及对static对象的初始化等动作。然后Startup调用main()函数,把控制权交给main()函数。main()函数执行完毕,控制权交回给Startup,进行反初始化动作。

  • 相关阅读:
    Linux基础命令---swapon
    Linux基础命令---fsck
    Linux基础命令---e2fsck
    Combination Sum
    Pow(x, n)
    Permutations
    Permutation Sequence
    Rotate List
    Unique Paths II
    Unique Paths
  • 原文地址:https://www.cnblogs.com/liudehao/p/5675798.html
Copyright © 2011-2022 走看看