zoukankan      html  css  js  c++  java
  • 2)main函数在执行前和执行后有哪些操作

    main函数执行之前,主要就是初始化系统相关资源
         1. 设置栈指针
         2. 初始化static静态和global全局变量,即data段的内容
         3. 将未初始化部分的全局变量赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL,等等,即.bss段的内容     
         4. 全局对象初始化,在main之前调用构造函数
         5. 将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数

    main函数执行之后:
         1. 全局对象的析构函数会在main函数之后执行; 
         2. 可以用_onexit 注册一个函数,它会在main 之后执行; 

    如果你需要加入一段在main退出后执行的代码,可以使用onexit()函数,注册一个函数。 
     
            #include <stdlib.h>
            #include 
    <stdio.h>
        
            
    int atexit(void (*function")(void));
            
    void fn1( void ), fn2( void ), fn3( void );
                             
            
    int main( void ){
                onexit( fn1 );
                onexit( fn2 );
                
    printf"This is executed first." );
            }
            
            
    void fn1(){
                
    printf" This is" );
            }
            
    void fn2(){
                
    printf" executed next." );
            }
    结果:
    This is executed first.
    This is executed next. 
     
  • 相关阅读:
    CAD图形引擎库VectorDraw
    基于COM的矢量图像控件VectorDraw
    [转]电子表格Spread 7.0线上发布会
    ProEssentials图表教程汇总
    几种JS 引擎介绍(不同浏览器有不同的引擎)
    我的 学习链接
    ExtJS 2.3版 源代码的解析(转)
    javascript调试原理(一)(转)
    使用GoogleCode SVN服务
    javascript调试原理(二) 模拟实现 (转)
  • 原文地址:https://www.cnblogs.com/weilf/p/4157213.html
Copyright © 2011-2022 走看看