首页 > 其他分享 >杂七杂八

杂七杂八

时间:2024-04-03 15:55:21浏览次数:7  
标签:变量 指向 杂七杂八 数据类型 地址 内存 指针

一、内存

一、物理及虚拟内存地址

程序在访问一个内存地址指向的内存时,CPU不是直接把这个地址送到内存总线上,而是先通过MMU(负责虚拟地址转换为物理地址),把内存地址映射到实际的物理内存地址上,然后再通过总线去访问内存,程序操作的地址称为虚拟内存地址。

二、用户和内核空间

内存中有一部分分配给内核使用,一部分分配给应用程序使用,分别称为内核空间和用户空间。

三、栈内存和堆内存

程序一般放在ROM(只读内存)中,运行时需要拷贝到RAM(随机存储器RAM)中执行,RAM会分别存储不同的信息,如下:

内存中的栈区处于相对较高的地址以地址的增长方向为上的话,栈地址是向下增长的。栈中分配局部变量空间,堆区是向上增长的用于分配程序员申请的内存空间。另外还有静态区是分配静态变量,全局变量空间的;只读区是分配常量和程序代码空间的;以及其他一些分区。

栈的空间是系统自动分配的,也会自动回收,如:定义一个变量;而堆空间需要程序员自己申请,需要自己手动去释放。

栈数据的生命周期只在函数运行过程中,运行之后就会释放掉,而堆上的数据只要程序员不是放就能一直访问到。说到这里可以额外说一下基本数据类型和引用数据类型:

基本数据类型保存在栈内存中,而变量可以看作是这块内存的标记;程序定义的变量名称,编译时会通过这个名称来找到值,当基本类型变量作为参数传递时,传递的是值的副本,而非本身引用,基本数据类型就是常见的数据类型,如:整形,字符型,布尔型等等。引用数据类型在内存中不直接存储数据值,而是存储数据值的引用地址,即指向这些值在堆中存储位置的指针,引用数据类型可以认为变量名在栈内存中,值在堆内存中,引用数据类型有类、接口、数组、枚举等。

上面说到了指针,指针是一个特殊的变量,里面存储的数值被解释为内存里的一个地址,也可以理解为内存会划分出小的内存单元,每个内存单元都有一个编号,这个编号被称为地址,这个地址也叫做指针,如下图。指针主要有四方面的内容,指针的类型、指针所指向的类型、指针本身所占据的内存区、指针所指向的内存区。

这里主要说明指针所指向的内存区。

指针所指向的内存区:指针的值是指针本身存储的数值,这个值会被编译器当成一个地址,指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区,我们说一个指针的值是XX,就相当于说该指针指向了以XX 为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。

为什么有变量还要指针呢,那是因为变量的再重复操作是不可能避免的会出现擦除和新建,造成资源的浪费,但是指针是对同一块内存进行修改的,免去了这个过程。

标签:变量,指向,杂七杂八,数据类型,地址,内存,指针
From: https://www.cnblogs.com/xinhuac/p/18112866

相关文章

  • 杂七杂八wp(NewStar_Week1和BeginCTF2024的部分pwn)
    碎碎念咱就一纯小白,以为带了Begin这一单词的CTF能对我仁慈一点,结果吧,太喜欢了,被狠狠拷打,从头自闭到尾,属于是从这次比赛又狠狠学习到不少知识了废话不多说,上正文嘞BeginCTFOne_bytechecksec嗯,基本啥都开了,喜欢捏。但是尊贵的CTFer,该“源审,启动!”了可以看到两个read,一个是......
  • 杂七杂八的胡言乱语
     这是笔者第一次网上写文章,提起笔才发现本就没多少学问真想写点什么脑子里就挺混乱(感慨一下语文功底不行) 就如标题所说的网友们就当是笔者的胡言乱语。可以看我写这篇文章也没多少园龄哈哈,不过都说博客园现在面临倒闭(49年入国军?) 为什么不选择其他平台?知乎、CSDN的一些平台......
  • 杂七杂八
    这里是final的作用,以及语法 然后这里是包的运用,想想爸爸儿子,私生子的例子帮助记忆     static,就是可以用来初始化一些东西,然后后面就改变不了,保护起来,static用完就没   ......
  • 一些杂七杂八的函数
    1lower_bound和upper_bound这两个函数是STL中用于二分查找的两个函数假定我们有一个有序的数组a,并将数x作为二分查找的目标 lower_bound:取得最小的a数组的下标i,满足a[i]>=xlower_bound(a,a+n,x)-a//下标从0开始lower_bound(a+1,a+n+1,x)-a//下标从1开始......
  • 杂七杂八的知识
    1.重载运算符理解并不难,主要是格式值得注意。另外要注意在队列中要注意排序的顺序,q.top()/q.front()访问的是队首元素,如果queue是升序,q.front()就是最大的;#include<iostream>#include<queue>usingnamespacestd;structstudent{stringname;intscore;};stru......
  • MySQL 关于缓存的 “杂七杂八”
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。你是否可以想象如果MYSQL没有了innodb_buffer_pool是什么样子的情况,本期需要说说MYSQL的缓存,已经如何使用他更加有效用或者说性......
  • LINUX杂七杂八
    一、防火墙的设置相关开放端口:firewall-cmd--zone=public--add-port=8089/tcp--permanent重启服务,让开放生效:systemctlrestartfirewalld查看是否成功开放:firewall-cmd--list-ports二、调整系统打开文件的限制数:打开终端,输入命令:ulimit-n,查看当前系统的文件打开限制,......
  • 杂七杂八的工具方法
    判断当前代码运行环境constisBrowser=typeofwindow==='object'&&typeofdocument==='object';清除所有CookiesconstclearCookies=()=>document.cookie.......
  • 杂七杂八备忘
    C++使用{}初始化会在损失初始化数据时报错。doubleaa=3.1415926;int64_tbb=aa;#这行代码正常执行,自动损失精度int64_tcc={aa};#这行代码将会报错Makef......
  • 杂七杂八记录
    1、云原生体系建设总图 2、中台的定义   3、中台的建设方式封装式  重构  4、服务治理手段常规4版斧第一,我们一定要设置超时;第二,要在一些场景里......