各种数据结构及其应用场景
1. 常用数据结构及其应用场景:
https://www.jianshu.com/p/ec17d738327f
2. 代码可执行文件的内存占用:【https://blog.csdn.net/u012942555/article/details/48876447】
首先要来理解一下可执行文件加载进内存后形成的进程在内存中的结构,如下图:
具体一些,函数内部定义的变量,在函数执行完毕后,就会出栈。
代码区:存放CPU执行的机器指令,代码区是可共享,并且是只读的。
数据区:存放已初始化的全局变量、静态变量(全局和局部)、常量数据。
BBS区:存放的是未初始化的全局变量和静态变量。
栈区:由编译器自动分配释放,存放函数的参数值、返回值和局部变量,在程序运行过程中实时分配和释放,栈区由操作系统自动管理,无须程序员手动管理。
堆区:堆是由malloc()函数分配的内存块,使用free()函数来释放内存,堆的申请释放工作由程序员控制,容易产生内存泄漏。
3. 数据结构堆栈 与我们申明变量,电脑的堆栈的关系?
https://www.cnblogs.com/ricklz/p/9044858.html
首先,存储器与寄存器的关系:内存如同一个仓库,堆栈是仓库中开辟的一个规则有序的后进先出的仓库区,而寄存器就是生产线上的一个容器。堆栈是属于内存区的一部分,而寄存器则是CPU中的一部分。同时想让数据存储在寄存器区,需要在前面加关键词 regist。
堆和栈的区别可以用如下的比喻来看出:
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。
4.变量内存分配方式及堆栈的关系
https://blog.csdn.net/qq_41291253/article/details/79509626
5. 全局变量与静态变量的关系:
https://blog.csdn.net/u012149181/article/details/83421563
简单来说,static用在函数内部,那么这个变量在程序运行完成后,也不会消失。其存储位置不在栈区了,而是数据区(也叫静态区,全局区)。全局变量global存储的位置也是一样。若程序由一个源文件构成时,全局变量与全局静态变量没有区别。
那么有什么区别呢?
若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享, 即:全局静态变量对组成该程序的其它源文件是无效的。
这样有什么好处呢?
(1)不必担心其它源文件使用相同变量名,彼此相互独立。
(2)在某源文件中定义的静态全局变量不能被其他源文件使用或修改。
这样的话,用static就可以保护当前文件的全局变量不被修改。
怎么会存在修改的问题呢?因为全局变量,我们可以在另一个文件夹用extern来引用,这样的话,会引起源文件的改变。用static就避免了这个问题。
各种数据结构及其应用场景相关推荐
- Redis专题-底层数据结构与使用场景
Redis介绍 Redis是一种基于键值对的NoSQL数据库,是一个基于内存中的数据结构存储系统,可以用作数据库.缓存和消息中间件.它支持以string(字符串),hash(哈希),list(列表), ...
- hashmap应用场景_Redis 5种数据结构 及使用场景分析
也当过面试官,面试过不少应聘者,因为是我自己招人自己用,所以我不会看应聘者造火箭的技术有多牛比,只看拧螺丝的手艺瓷不瓷实.毕竟以后是一个整体,拖了大家后腿团队都很难受. 面试的题目一般也不会太难,就像 ...
- 【面试经典】redis 常见数据结构以及使用场景分析
1.String 常用命令: set,get,decr,incr,mget 等. String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字. 常规key- ...
- list redis 怎样做排行_Redis中5种数据结构的使用场景介绍
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...
- 常用数据结构及其应用场景
常用数据结构及其应用场景 目录 1,数组 2,链表 3,树 3.1 二叉搜索树 3.2 AVL树 3.3红黑树 补充:关于AVL树和红黑树的左旋与右旋 右旋 左旋 思维导图 1,数组 这是大家最熟悉 ...
- Redis五种数据结构及其使用场景
Redis五种数据结构及其使用场景 先有个概念,redis 数据库其实就是一个大的 map,它容纳了所有的 key, key 都是 string 类型,而 value 则有 string, list, ...
- redis数据结构及使用场景
redis数据结构及使用场景 1.字符串(String) String是最常用的一种数据类型,普通的k/v存储都可以归为此类.redis是使用C语言开发,但C中并没有字符串类型,只能使用指针或符数组的 ...
- 玩玩Redis系列(八)--redis数据结构及使用场景
redis数据结构及使用场景 数据结构 String 相关命令 使用场景 List 相关命令 使用场景 Set 相关命令 使用场景 Hash 相关命令 使用场景 ZSet 相关命令 使用场景 Hype ...
- Redis [1] 简介、数据结构、应用场景
文章目录 Redis [1] 简介.数据结构.应用场景 简介:**Nosql**介绍和**Reidis**介绍 什么是Redis 什么是缓存 面:为什么要用缓存 面:缓存会带来哪些问题? 热点key的 ...
最新文章
- 重磅!2021年全球高被引科学家名单出炉!
- SCOPE_IDENTITY()
- 防火墙认证的类型——Vecloud
- GMF Labels
- 【POI】对于POI无法处理超大xls等文件,官方解决方法【已解决】【多线程提升速率待定】...
- JAVA将 带有空格或特殊字符的字符串转换成int数组的方法
- 【再认识】认知智能下需要的实体知识与事件知识
- js设计一个带开关的时钟_数电题:三个按键一个灯
- 嘀嗒还是滴答_2021年顺风车车主口碑榜!滴滴、滴答、一喂顺风车成TOP3
- 浅谈SCOM Agent的心跳响应机制
- Linux 配置IP
- 多米诺喷码机维修大全之----缺字、字体不成形、字体跑点以及歪
- UBNT设置AP模式注意事项
- 5.3 恶意代码功能演示示例(上兴远程控制2014版)
- kali linux网卡推荐,BT5 Kali Linux 网卡选择
- Python3爬虫(4)--抓取考生的四六级成绩
- 看完你就知道交换机端口该搭配什么光模块了
- 基于DDD的微服务设计和开发实战
- Onvif OSD相关操作
- Windows7旗舰版性能优化
热门文章
- 签到APP:android入门级小项目,Node.js 提供服务端接口。
- 请求重定向与转发的区别
- iphone桌面滑动效果html5,使用CSS Shapes实现滚动环绕iPhone X刘海效果
- Linux基础命令-软件包管理
- com.netflix.hystrix.exception.HystrixRuntimeException
- 198个经典C#WinForm实例源码
- K-SVD字典学习及其实现(Python)
- Python私有变量与私有方法
- js模块化html,js模块化和使用
- 数睿数据新签约6家合作伙伴,第六届山东软件生态大会顺利落幕