首页 > 其他分享 >地址空间以及编译模式

地址空间以及编译模式

时间:2023-06-10 14:34:33浏览次数:40  
标签:函数 局部变量 模式 编译 地址 64 内存 分配

Linux下32位环境的用户空间内存分布:

 

Linux下64位环境的用户空间内存分布:

前面讲到,在64位环境下,虚拟地址虽然占用64位,但只有最低48位有效。故从0000800000000000~FFFF800000000000,棕色FFFF所代表的这十六位就变成了无效区域(未定义)。


 程序代码区用来保存函数体的二进制代码指令,常量区用来存放const和字符串,全局数据区存放全局变量和静态变量。它们在程序加载到内存后就分配好了,并且在程序运行期间一直存在(大小已被固定),所以这些常量和变量在程序的任何地方都能被访问,因为其内存一直都在。

常量区和全局数据区有时也被合称为静态数据区,意思是这段内存专门用来保存数据,在程序运行期间一直存在。

函数被调用时,会将参数、局部变量、返回地址等与函数相关的信息压入栈中。执行结束后,就会放弃对它们的使用权(大概率就将被销毁)。这个过程由系统自动分配和释放,程序员唯一能够控制的内存区就是堆(Heap)。它是虚拟地址中的一大块内存空间,程序可以申请一块内存自由使用,并且在主动释放之前会一直存在,不随函数的结束而失效。需要提一嘴:栈区是从上往下增长,而堆区是从下往上增长。也就是说,在栈中先定义的局部变量地址会较大、后定义的局部变量地址会较小~由大到小,依次减小。而堆中分配的变量则是先分配的地址较小,后分配的地址较大。

标签:函数,局部变量,模式,编译,地址,64,内存,分配
From: https://www.cnblogs.com/mikewzp/p/17471234.html

相关文章

  • vuex使用,Router使用(做两个主页面的跳转),路由守卫(对路由进行权限控制),路由的工作模式
    vuex使用使用的流程文件中的代码前端页面<template><div><h1>使用vuex</h1>购物车商品数量:{{num}}购物车的数量:{{$store.state.num}}<br><button@click="yjx">加数量</button></div></template><sc......
  • 编译原理面试题
    1、请解释编译器前端和后端的区别,并描述它们在编译过程中的职责。编译器是将高级程序语言转换为目标机器语言的软件工具。它通常由两个主要组件组成:前端和后端。编译器前端:编译器前端主要负责源代码的分析和处理。它包括以下阶段:词法分析(LexicalAnalysis):将源代码分解成标记......
  • IDEA编译和构建JavaWeb项目时,项目中没有target目录,且out目录下classes文件下main包下
    问题如下:1.我们在添加web框架时,如图:2.在添加完框架,和配置完Tomcat我们开始运行项目,发现没有target文件和out文件下classes文件下什么都没有原因:出现这种情况,很可能是因为未加载的模块出现在了iml文件中,导致生成taget的时候出错,进而导致out文件内class文件的......
  • 停止浪费金钱:通过双模式创新的创新衡量优化投资回报率
    不确定性和风险是创新投资的常态,这让企业领导者和创新团队面临着一个共同的挑战:如何衡量创新ROI?本文将探讨如何在高风险创新中实现回报,需要采用探索和开发的双模机制。在这个快速变化的市场中,企业创新为了实现可持续的ROI,在每个创新决策中,了解项目所在的领域,设定正确的期望和指......
  • Cache - 虚拟地址 or 物理地址
    参考https://zhuanlan.zhihu.com/p/107096130Cache使用地址判断是否命中,地址使用的是物理地址还是虚拟地址呢?1.VIVT(VirtuallyIndexedVirtuallyTagged)虚拟高速缓存:以虚拟地址作为查找对象。首先虚拟地址给cache,如果命中,则返回数据给cpu,如果未命中,则将虚拟地址通......
  • vmware_linux_交叉编译
    安装ubuntu使用清华源的服务器来下载,很快,搜索ubuntuhttps://mirrors.tuna.tsinghua.edu.cn/ 选择版本即可下载,由于版本不稳定,建议不要下载高本版的。......
  • 在众惠生活的模式下,我们还需要注重哪些方面?
    在众惠生活的模式下,我们还需要注重以下几个方面:加强教育宣传众惠生活的理念需要更多的人们来共同认可和支持,这需要加强对公益事业和社区价值的教育宣传。政府、媒体、企业、个人都应该有所作为,在教育和推广众惠生活的理念中贡献自己的力量,打造一个更美好的社会。推广社群合作众惠生......
  • 在众惠生活的模式下,我们还需要注重哪些方面?
    在众惠生活的模式下,我们还需要注重以下几个方面:加强教育宣传众惠生活的理念需要更多的人们来共同认可和支持,这需要加强对公益事业和社区价值的教育宣传。政府、媒体、企业、个人都应该有所作为,在教育和推广众惠生活的理念中贡献自己的力量,打造一个更美好的社会。推广社群合作众惠生......
  • 构建编译dockerfile docker build报错make: uname: Operation not permitted
    报错信息:查看docker版本#docker-vDockerversion1.13.1,build7d71120/1.13.1在dockerfile中我使用的基础镜像为FROMalpine:3.16.5解决办法是升级docker或者降低Alpine的版本,我这边选择升级docker版本卸载现有docker版本#yum-yremove$(rpm-qa|grepdocker......
  • 值传递与地址传递的区别
    值传递与地址传递的区别#include<stdio.h>intArrayCopy(char*ori,char*cop,charLength){charloop;for(loop=0;loop<Length;loop++){*cop++=*ori++;}return0;}intmain(){charoriginal[10]={1,2,3,4,......