C++内存空间

news2024/11/28 3:38:42

内存空间

1.内存空间

在 C++ 中,内存分为内核空间和用户空间,内核空间由操作系统管理,程序员写的程序在用户空间。

程序运行时,内存主要分成四个区,分别是栈、堆、数据段和代码段。

栈:存储局部变量、函数参数和返回值。
堆:存储动态开辟内存的变量。
数据段:存储程序中的全局变量和静态变量。
代码段:存储可执行程序的二进制代码和常量(例如字符常量),程序运行后,此代码段的内容是不可修改的。

数据段:一个程序中的全局变量和静态变量一般使用较少,不做过多展开。

重点关心栈和堆,程序处理的数据主要存放在这两个区域中。

栈:存储局部变量、函数参数和返回值
堆:存储动态开辟内存的变量

2.栈和堆的主要区别

1)管理方式不同:栈是系统自动管理的,在出作用域时,将自动被释放;
堆需要程序员手动释放,若程序中不释放,程序结束时由操作系统回收。
2)空间大小不同:堆内存的大小受限于物理内存空间;而栈就小得可怜,一般只有8M(可以修改系统参数,但是没有必要)。当内存越大,堆分配的空间也就越大。
3)分配方式不同:堆是动态分配;栈有静态分配和动态分配(都是自动释放)。
4)分配效率不同:栈是系统提供的数据结构,计算机在底层提供了对栈的支持,进栈和出栈有专门的指令,效率比较高;堆是由C++函数库提供的。栈的效率非常高,堆是用链表来管理的,效率相对来说,会低一点。
5)是否产生碎片:对于栈来说,进栈和出栈都有着严格的顺序(先进后出),不会产生碎片;而堆频繁的分配和释放,会造成内存空间的不连续,容易产生碎片,太多的碎片会导致性能的下降。
6)增长方向不同:栈向下增长,以降序分配内存地址;堆向上增长,以升序分配内存地址。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

今日餐饮美食推荐系统多商家 uniapp+vue微信小程序

此今日美食推荐小程序信息的设计主要有两个用户,会员客户端和管理员服务端两个部分:会员客户主要功能; (1)会员信息:包括:会员注册、会员登录,包括对个人信息进行修改。 &#xff08…

Redis的常用数据结构之哈希类型

首先这里说的哈希类型针对的是redis中的value的k-v结构 常见的操作命令 hset设置值 hsetnx命令,不存在可以设置,存在设置不成功 hget取值,这里与字符串类型不同是要精确到filed。前面的判断也是基于field来实现的 要是field没有就返回null h…

计算机视觉:卷积步长(Stride)

本文重点 我们前面学习了卷积操作,也学习了填充,本节课程我们学习卷积步长,之前我们使用卷积核进行卷积操作都是在图像的左上角开始,从左到右、从上到下每次移动一步,其实移动多少步是可以变化的,这个移动步数称为步长。 什么是步长 卷积操作中的步长(Stride)是指卷…

Qt自定义的ColorDialog--仿QColorDialog

Qt已经有了色板选择,但是它使用QDialog形成的,每次调用基本上都成了点一个按钮,谈一个模态框,选择好颜色之后再关掉模态框。 但是,如果想将颜色选择板放在窗口上,并不会有模态的功能就会比较麻烦&#xff…

【Python GUI编程】零基础也能轻松掌握的学习路线与参考资料

Python GUI编程是指使用Python语言及其相关的GUI框架来开发图形用户界面的程序。学习Python GUI编程需要具备一定的基础知识,如Python语言基础、面向对象编程、GUI编程等。下面给出详细的学习路线和参考资料。 一、Python基础 学习Python GUI编程的第一步需要具备…

代理模式 静态代理 动态代理

代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不应该看到的内容和服务或者添加客户需要的额外服务。 代理模式中的角色: 代理类目标类代理类和目标类的公共接口:客户端在使用代理类时就像在使用目标类&a…

接口加密解决方案:Python的各种加密实现

前言 在现代软件开发中,接口测试已经成为了不可或缺的一部分。随着互联网的普及,越来越多的应用程序都采用了接口作为数据传输的方式。接口测试的目的是确保接口的正确性、稳定性和安全性,从而保障系统的正常运行。 在接口测试中&#xff0…

【C++项目】负载均衡oj

前言: 本篇记录负载均衡oj项目设计的整体思路和部分代码。 负载均衡oj项目基于http网络请求,通过简单的前后端交互:前端的页面编辑已经提交代码,后端控制模块和编译运行的模块分离整合(负载均衡式的选择后端编译运行服…

【2024最新】Spring面试题

✅✅作者主页:🔗请你喝杯Java的博客 🔥🔥精选专栏:🔗Java求职一条龙(持续更新中) 💞💞觉得文章还不错的话欢迎大家点赞👍➕收藏⭐️➕评论💬支持博主🤞 👉 👉你的一键三连是我更新的最大动力❤️❤️ 【2024最新】Spring面试题 一.Spring中@Resource…

Unity包围盒

序 比如,目前导入了一个obj文件,想知道它的AABB包围盒是什么。 官方文档 Unity - Scripting API: Bounds (unity3d.com) 可以看到,包围盒有三个类别的: Mesh.bounds Unity - Scripting API: Mesh.bounds (unity3d.com) 不随…

【万字解析、学习参考资料】MySQL数据库常见面试题

version:1.0 文章目录 基础篇🙎‍♂️面试官: 非关系型数据库和关系型数据库的区别?🙎‍♂️面试官: MySQL 数据库两种存储引擎的区别? 事务篇🙎‍♂️面试官: 事务的四大特性了解…

C语言之网络编程(必背知识点)

一、认识网络 1、网络发展史 网络的来历_百度知道 ARPnetA--Internet--移动互联网--物联网 2、局域网和广域网 局域网(LAN) 局域网的缩写是LAN,local area network,顾名思义,是个本地的网络,只能实现小范围…

【KVM虚拟化】· 虚拟机的冷迁移和热迁移

目录 🍎静态迁移(冷迁移) 🍎动态迁移(热迁移) 🍎迁移注意事项 🍒静态迁移 🍒动态迁移 🍒迁移帮助命令 🍎迁移实例 🍓冷迁移 🍓热迁移 &#x1f35…

ChatGPT让我变成了“超人”-如何提升团队30%效能质量提高100%的阶段性总结报告

创作背景 CHATGPT刚出现时我的内心有一万匹“马”在奔腾,我是排斥的、BS的、甚至关掉屏敝掉相关新闻、连家里电视机的插线都拨掉。因为它的表现真的伤到了我的自尊。 这样的情绪源至我自己的“不自信”,不自信的前提是因为听到的东西太过于有“冲击性”了…

更适合电音的蓝牙耳机,设计真的很潮,哈氪零度青春版上手

现在低价位的耳机,音质都没什么特点,设计也是马马虎虎吧,想找一款好看好听的耳机还真不容易。最近我用的是一款哈氪零度青春版,这款耳机设计就很不错,上面加入了冰雪的元素,而且这款耳机音频素质也很不错&a…

ESP32-S3在VSCODE上编译烧录

1.准备 安装好ESP-IDF和VSCODE上的扩展插件 参考安装步骤1 参考按照步骤2 2.编译和烧录 (1)显示所有例程 (2)在get-started处选择hello_world,然后创建项目目录 (3)选择芯片类型&#xff0c…

【网络协议详解】——DNS系统协议(学习笔记)

目录 🕒 1. DNS的作用🕒 2. 域名结构🕒 3. 域名分类🕒 4. 域名空间🕒 5. 域名服务器类型🕘 5.1 根域名服务器🕘 5.2 顶级域名服务器🕘 5.3 权限域名服务器🕘 5.4 本地域名…

Java-软考总结

软考总结目录 宏观  学习感受  阶段划分 微观  1.自己看书和看视频:  2.学习的知识点和课后题进行结合  3.做往年的软考真题  4.提炼出相对来说难以攻克的问题组织分享和讨论  5.小组讨论做错的题并进行结构化 总结学习时间上学习方法上学习形式上 宏…

【Linux入门】Linux权限及管理

【Linux入门】Linux权限及管理 目录 【Linux入门】Linux权限及管理Linux权限管理文件访问者的分类文件类型和访问权限(事物属性) 文件权限值的表示方法文件访问权限的相关设置方法目录的权限实现共享目录粘滞位目录权限总结 作者:爱写代码的刚…

【iOS开发-多线程【四】pthreadNSThread

前言 多线程的最后一篇,从GCD的API到GCD的实现,学到了NSOperation和NSOperationQueue 慢慢了解了多线程的使用场景和众多原理,其中不乏涉及到了其他的知识,锁等。 这篇博客学习iOS常用的NSThread,了解pthread&#x…