• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 从汇编看c++中函数里面的static关键字的使用说明

从汇编看c++中函数里面的static关键字的使用说明

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++ static,c++static的作用,c++ static cast,c++中static的用法,c++中static的作用等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

下面从汇编语言看其原理.

下面是c++源代码:

    push    ebp
    mov    ebp, esp

; 6    :    add();

    call    ?add@@YAXXZ                ; 调用add

; 7    :   
; 8    : }

    xor    eax, eax
    pop    ebp
    ret    0
</div>
下面是add函数对应的汇编码:

    push    ebp
    mov    ebp, esp

; 2    :     static int i = 1;
; 3    :     i++;

    mov    eax, DWORD PTR ?i@?1??add@@YAXXZ@4HA;取变量i的值
    add    eax, 1;执行加法
    mov    DWORD PTR ?i@?1??add@@YAXXZ@4HA, eax;存变量i的值

; 4    : }

    pop    ebp
    ret    0
</div>
可以看,不论是main函数,还是add函数里面,我们都看不到为i分配存储空间,也就是说,i不在他们的调用栈里面。

再看下面的汇编码:
</div>

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 由static_cast和dynamic_cast到C++对象占用内存的全面分析
  • 解析C++编程中的bad_cast异常
  • C++中4种类型转换方式 cast操作详解
  • 关于C++中的static关键字的总结
  • C++中四种对象生存期和作用域以及static的用法总结分析
  • 关于C/C++中static关键字的作用总结
  • 解析static在C和C++中的用法以及区别
  • 从汇编看c++中函数里面的static关键字的使用说明
  • C++的static关键字及变量存储位置总结

相关文章

  • 2017-05-28浅析C语言中的setjmp与longjmp函数
  • 2017-05-28ipv6实现tcp编程示例
  • 2017-05-28如何实现循环队列
  • 2017-05-28C++实现自底向上的归并排序算法
  • 2017-05-28CFileDialog的钩子函数解决对话框的多选之DoModal问题
  • 2017-05-28C++基础入门教程(八):函数指针
  • 2017-05-28VC判断一个文件为目录的方法
  • 2017-05-28深入理解goto语句的替代实现方式分析
  • 2017-05-28C语言入门之指针用法教程
  • 2017-05-28浅析C语言位域和位段

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++第11版本中的一些强大的新特性小结
    • C语言指针的长度和类型深入分析
    • win32 api实现简单的消息窗口示例
    • 举例解析设计模式中的工厂方法模式在C++编程中的运用
    • C语言基础之malloc和free函数详解
    • 详解C++编程中多级派生时的构造函数和访问属性
    • 双向链表插入删除基本应用介绍
    • 深入解析C++编程中范围解析运算符的作用及使用
    • Windows程序内部运行机制实例详解
    • C语言实现大数据文件的内存映射机制

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有