• 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++中变量类型的深入分析

从汇编看c++中变量类型的深入分析

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

通过本文主要向大家介绍了c++反汇编工具,c++汇编,c++变量类型,汇编语言怎么定义变量,汇编定义变量等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

全局变量的生命期和可见性是整个程序的运行期间,下面就来用汇编来看一下实际情况:

c++源码:

int main() {
    int j = i;
}
</div>

下面是汇编代码:

; 3    : int main() {

    push    ebp
    mov    ebp, esp
    push    ecx;为局部变量分配4字节存储区

; 4    :     int j = i;

    mov    eax, DWORD PTR ?i@@3HA            ; 获取全局变量i的的值
    mov    DWORD PTR _j$[ebp], eax;eax存有i的值,将它赋给局部变量j

; 5    : }

    xor    eax, eax
    mov    esp, ebp;//栈顶指针恢复,释放为j分配的栈空间
    pop    ebp
    ret    0
_main    ENDP
_TEXT    ENDS
</div>
从汇编语言中可以看到,全局变量i的内存分配在内存中的数据区(由_DATA指定),因此在程序运行的过程中始终存在,所以对于程序中的所有部分都可以访问,而且随着程序的结束销毁;而局部变量j的内存是在运行main函数中在栈上动态分配,而且main函数结束后,此空间被释放,因此在main函数外面不能访问局部变量j。

实际上,在操作系统载入可执行文件的时候,它首先将数据区中的数据载入相应的内存,然后才开始运行程序,因此,全局变量产生在文件加载之后,第一条程序语言执行之前。

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

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

  • 从汇编看c++中变量类型的深入分析
  • 从汇编看c++函数的默认参数的使用说明
  • 从汇编看c++中引用与指针的使用分析

相关文章

  • 2017-05-28C语言求解最长公共子字符串问题及相关的算法分析
  • 2017-08-27使用gcc在命令行中预定义宏
  • 2017-05-28基于对话框程序中让对话框捕获WM_KEYDOWN消息的实现方法
  • 2017-05-28C++之普通成员函数、虚函数以及纯虚函数的区别与用法要点
  • 2017-05-28C++基础入门教程(四):枚举和指针
  • 2017-05-28C语言实现Linux下的socket文件传输实例
  • 2017-05-28C语言数据结构二叉树简单应用
  • 2017-05-28linux使用gcc编译c语言共享库步骤
  • 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语言中强制地址跳转详解
    • 使用C语言实现最小生成树求解的简单方法
    • c++读取sqlserver示例分享
    • C语言使用openSSL库AES模块实现加密功能详解
    • 手把手教你如何优化C语言程序
    • C++用Dijkstra(迪杰斯特拉)算法求最短路径
    • socket多人聊天程序C语言版(一)
    • C++ ofstream与ifstream详细用法
    • C++基础入门教程(一):基础知识大杂烩

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

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