【操作系统】补充:你看到的所有地址都不是真的

补充:你看到的所有地址都不是真的
写过打印出指针的 C 程序吗?你看到的值(一些大数字,通常以十六进制打印)是虚拟地址(virtual
address)。有没有想过你的程序代码在哪里找到?你也可以打印出来,是的,如果你可以打印它,它也
是一个虚拟地址。实际上,作为用户级程序的程序员,可以看到的任何地址都是虚拟地址。只有操作系
统,通过精妙的虚拟化内存技术,知道这些指令和数据所在的物理内存的位置。所以永远不要忘记:如
果你在一个程序中打印出一个地址,那就是一个虚拟的地址。虚拟地址只是提供地址如何在内存中分布
的假象,只有操作系统(和硬件)才知道物理地址。
这里有一个小程序,打印出 main() 函数(代码所在地方)的地址,由 malloc()返回的堆空间分配的
值,以及栈上一个整数的地址:

// 你所看到的所有地址都不是真的

#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[]){printf("location of code:%p\n",(void *)main);printf("location of heap:%p\n",(void *)malloc(1));int x = 3;printf("location of stack:%p\n",(void *) &x);return x;
}

从这里,你可以看到代码在地址空间开头,然后是堆,而栈在这个大型虚拟地址空间的另一端。所有这些地址都是虚拟的,并且将由操作系统和硬件翻译成物理地址,以便从真实的物理位置获取该地址的值。

root@VM-24-6-centos justin1220]# ./13
location of code:0x40057d
location of heap:0x602010
location of stack:0x7fffffffe02c

main入口地址:0x40057d
heap起始地址:0x602010
stack起始地址:0x7fffffffe02c

在这里插入图片描述
ref:https://pages.cs.wisc.edu/~remzi/OSTEP/Chinese/13.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/295047.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes pod ip 暴露

1. k8s pod 和 service 网络暴露 借助 iptables 的路由转发功能&#xff0c;打通k8s集群内的pod和service网络&#xff0c;与外部网络联通 # 查看集群的 pod 网段和 service 网段 kubectl -n kube-system describe cm kubeadm-config networking:dnsDomain: cluster.localpod…

【水文专业词汇】气象水文、水利工程等

水文专业词汇&#xff1a;气象水文、水利工程等 气象水文类水循环过程地区分类 水利工程类跨流域调水工程 参考 气象水文类 水循环过程 中文英文降水/降雨precipitation/rainfall径流runoff/streamflow产汇流runoff generation 地区分类 中文英文雨养作物区rain-fed agricu…

机场信息集成系统系列介绍(8):基于视频分析的航班保障核心数据自动采集系统

目录 一、背景 二、相关功能规划 1、功能设计 2、其他设计要求 三、具体保障数据采集的覆盖点 四、相关性能指标要求 1、性能指标要求 2、算法指标要求 一、背景 基于视频分析的航班保障核心数据自动化采集系统&#xff0c;是ACDM系统建设的延伸&#xff0c;此类系统并…

【Linux基础开发工具】gcc/g++使用make/Makefile

目录 前言 gcc/g的使用 1. 语言的发展 1.1 语言和编译器自举的过程 1.2 程序翻译的过程&#xff1a; 2. 动静态库的理解 Linux项目自动化构建工具-make/makefile 1. 快速上手使用 2. makefile/make执行顺序的理解 前言 了解完vim编辑器的使用&#xff0c;接下来就可以尝…

springboot使用Validated实现参数校验

做为后端开发人员&#xff0c;一定有前端传的数据是可能会出错的警惕性&#xff0c;否则程序就可能会出错&#xff0c;比如常遇到的空指针异常&#xff0c;所以为了程序运行的健壮性&#xff0c;我们必须对每一个参数进行合法校验&#xff0c;就能避免很多不必要的错误&#xf…

力扣单调栈算法专题训练

目录 1 专题说明2 训练 1 专题说明 本博客用来计算力扣上的单调栈题目、解题思路和代码。 单调栈题目记录&#xff1a; 2232866美丽塔II 2 训练 题目1&#xff1a;2866美丽塔II。 解题思路&#xff1a;先计算出prefix[i]&#xff0c;表示0~i满足递增情况下&#xff0c;0~i…

html旋转相册

一、实验题目 做一个旋转的3d相册&#xff0c;当鼠标停留在相册时&#xff0c;相册向四面散开 二、实验代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" con…

【数据结构之单链表】

数据结构学习笔记---003 数据结构之单链表1、什么是单链表?1.1、概念及结构 2、单链表接口的实现2.1、单链表的SList.h2.1.1、定义单链表的结点存储结构2.1.2、声明单链表各个接口的函数 2.2、单链表的SList.c2.2.1、遍历打印链表2.2.2、销毁单链表2.2.3、打印单链表元素2.2.4…

三级安全教育二维码的应用

三级安全教育是指公司、项目经理部、施工班组三个层次的安全教育&#xff0c;是工人进场上岗前必备的过程&#xff0c;属于施工现场实名制管理的重要一环&#xff0c;也是工地管理中的核心部分之一&#xff0c;目前很多公司已经逐步开始使用系统来进行管理&#xff0c;下面我们…

Python数据科学视频讲解:特征归一化、特征标准化、样本归一化

5.1 特征归一化、特征标准化、样本归一化 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解5.1节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应用的全流程&#…

软件测试 —— 冒烟测试(Smoke Test,ST)

1. 核心 冒烟测试就是完成一个新版本的开发后&#xff0c;对该版本最基本的功能进行测试&#xff0c;保证基本的功能和流程能走通。 如果不通过&#xff0c;则打回开发那边重新开发&#xff1b; 如果通过测试&#xff0c;才会进行下一步的测试(功能测试&#xff0c;集成测试&a…

css画三角形

css画三角形 <!doctype html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0"&g…