泛型编程四:栈、堆,内存管理

文章目录

  • 前言
  • 一、栈、堆
    • 栈(Stack)
    • 堆(Heap)
  • 二、static生命期
  • 三、heap生命期
  • 四、new、delete的作用机制
  • 五、动态分配的内存(in VC)
      • 如图,第一列为调试模式下的复数的内存分配,复数有两个double,占用8个字节,灰色有上面8块加下面一块,所以是32+4。红色叫cookie,类似夹心饼干,故4*2。由于内存分配都是16的倍数,所以52要补到64,多出来的绿色就是补的。第二列是编译模式。第三列是string类的调试模式,string类只有一个指针占4个字节。
  • 六、进一步补充namespace
  • 总结


前言

栈与堆的区别,内存动态分配在调试模式、编译模式的变化。static的生命周期

一、栈、堆

栈(Stack)

栈是存在于某作用域(scope)内的一块内存空间(memory space),当你调用某函数,函数本身会形成一个stack用来放置它所接收的参数

堆(Heap)

堆是由操作系统提供的一块global内存空间。程序可以动态分配到其间赋若干区块(blocks)

二、static生命期

static也就是静态变量,可以在后面加上数据或者函数,他的生命周期是等待程序结束时候才会被自动清理。static函数调用可以直接通过类名调用,也可以创建一个类对象来调用。
468465

三、heap生命期

通常搭配new和delete使用,由程序员自己创建和释放,如果忘记delete了,会有内存泄漏的风险,因为当作用域结束时候,p指针所指的内存还存在,但是此时指针p却结束了,所以就会导致内存泄漏

四、new、delete的作用机制

new的实际如图,可以概括为先分配内存,然后调用构造函数(转型只是把类型转换了),注意operator new底层是c中的malloc分配内存。构造函数会有赋值。
122
delete相反,先调用析构函数,然后释放内存空间(内部调用C的free)

1231

五、动态分配的内存(in VC)

如图,第一列为调试模式下的复数的内存分配,复数有两个double,占用8个字节,灰色有上面8块加下面一块,所以是32+4。红色叫cookie,类似夹心饼干,故4*2。由于内存分配都是16的倍数,所以52要补到64,多出来的绿色就是补的。第二列是编译模式。第三列是string类的调试模式,string类只有一个指针占4个字节。

在这里插入图片描述
下图是数组的new,复制三遍所以8*3。最后多出来的4是因为数组会有一个标志位3。注意头顶的51h实际上是80的十六进制50h+1。最后1和0代表读写。注意new数组一定要搭配delete,否则只是删除p一次,不是三次。
156

六、进一步补充namespace

有两种调用方式,一种是直接开头全部声明,一种是部分声明
844896


总结

系统总结了栈、堆,内存管理,以及包括new的剖析。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电子合同:纸质合同的未来替代者?

随着科技的迅猛发展,电子合同作为一种新兴的合同形式,逐渐在各行各业中崭露头角。那么,电子合同是否会替代纸质合同,成为未来合同形式的主流呢?本文将就此话题展开探讨。 首先,我们来看电子合同的优势。电…

cookie没有携带的问题

背景: build-model应用在hcs迁移的时候,前、后端各自部署了一个新应用,但是调试时候发现没有cookie,导致鉴权失败! 注: 后端通过cookie中的token做鉴权的,前端调用接口的时候,查看&…

SPD1179 电路设计---汽车电机控制设计

概述 SPD1179 是旋智针对汽车应用推出的一颗高度集成的片上系统(SOC) 微控制器,内置 32 位高性能 ARMCortex-M4F 内核,最高 100MHz 的软件可编程时钟频率, 32KB SRAM, 128KB 嵌入式 FLASH, 1KB …

04-18 周四 为LLM_inference项目配置GitHub CI过程记录

04-18 周四 为LLM_inference项目配置GitHub CI过程记录 时间版本修改人描述2024年4月18日10:30:13V0.1宋全恒新建文档 简介和相关文档 04-15 周一 GitHub仓库CI服务器配置过程文档actions-runner 是托管与GitHub上的仓库,下载最新的客户端程序即可。self hosted r…

多C段的美国站群服务器有什么用途?

多C段的美国站群服务器有什么用途? 多C段的美国站群服务器是一种常见的网络运营策略,其用途主要体现在以下几个方面: 多C段的美国站群服务器有什么用途? 1. 提高站点排名和流量 部署多个站点在不同的C段IP地址上,可以通过不同的IP地址发布…

BGP协议应用:SW1、SW2、SW3、RT1、RT2之间运行BGP协议

8.SW1、SW2、SW3、RT1、RT2之间运行BGP协议,SW1、SW2、RT1 AS号65001、RT2 AS号65002、SW3 AS号65003。 (1)SW1、SW2、SW3、RT1、RT2之间通过Loopback1建立IPv4 BGP邻居。SW1和SW2之间财务通过Loopback2建立IPv4 BGP邻居,SW1和SW2的Loopback2互通采用静态路由。 (2)SW1…

运行一个jar包

目录 传送门前言一、Window环境二、Linux环境1、第一步:环境配置好,安装好jdk2、第二步:打包jar包并上传到Linux服务器3、第三步:运行jar包 三、docker环境1、Linux下安装docker和docker compose2、Dockerfile方式一运行jar包2.1、…

优思学院|HR部门如何制定公司的精益六西格玛培训计划?

在许多企业中,精益六西格玛作为一种提升效率和质量的重要方法论,越来越受到重视。HR部门在推广和实施精益六西格玛培训计划中其实也扮演着关键角色。以下是HR部门可以采取的几个步骤,以有效地制定和实施这样的培训计划。 1. 需求分析 首先&…

人工智能学习+Python的优势

1.人工智能的发展阶段 1.1 强人工智能: 1.2 弱人工智能: 2.符号学习 符号学习的本质就是:规定好的逻辑和顺序,根据这个模板告诉机器接下来需要做什么,遵循if...then原则——>缺点:不能根据新的场景…

本地主机访问服务器的Redis -- 配置 ssh 端口转发

前言 在进行Java开发时,高度的依赖 Windows 上的开发软件 idea ,那么我们想访问位于服务器上的 redis 怎么办呢?在平时我们想访问位于服务器上的程序,只需要开放它的端口即可,比如我们创建的网站,比如 tomc…

Go通过CRUD实现学生管理系统

虽然这个项目没有什么含金量,但是可以熟悉go的语法和go开发项目的一般流程 项目结构 项目实现了五个功能: (1)增加一个学生 (2)删除一个学生 (3)修改一个学生的信息 (4&#xf…

基于微信小程序的图书馆预约系统的设计与实现

个人介绍 hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的…

【一起深度学习吧!!!!!】24/05/03

卷积层里的多输入输出通道 1、 多输入通道:代码演示: 多输出通道:代码实现: 1、 多输入通道: 当输入包含多个通道时,需要构造一个输入通道与之相等的卷积核,以便进行数据互相关计算。 例如李沐…

责任链模式和观察者模式

1、责任链模式 1.1 概述 在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导…

XMall-Front:基于Vue.js的XMall商城前台页面的开发实践

XMall-Front:基于Vue.js的XMall商城前台页面的开发实践 摘要 随着电子商务的蓬勃发展,用户体验逐渐成为决定电商平台成功与否的关键因素。作为XMall商城项目的一部分,XMall-Front是基于Vue.js的前端页面开发,其目标是为用户提供…

《深入解析WIndows操作系统》第10章读书笔记

1、大页面和小页面:虚拟地址空间被划分成以页面为单位,这是因为硬件内存管理单元在页面的粒度上,将虚拟地址转译为物理地址。Windows支持两种页面尺寸:大页面和小页面,根据处理器体系结构不同,实际尺寸值有…

HAL PWM 配置 占空比 频率 stm32 学习笔记

title: HALPWM配置占空比频率 tags: STM32ClionHal 1.STM32CubeMX学习笔记(13)——PWM输出(呼吸灯)使用 2.STM32标准库HAL库 | 高精度动态调节PWM输出频率占空比 看你cubemx 里面的配置时钟频率是多少 参照第二篇文章描述修改 下面俩个参数就行 uin…

SAP生产订单常用状态以及

常用系统状态: 状态 状态 CRTD 已建立 REL 已核发 CNF 已确认 PCNF 已部份确认 DLV 已交货 DLT 删除指示码 LKD 已锁住 TECO 技术完成 GMPS 已发料 关闭 关闭 工单结案前的生产报表分析 路径:后勤系统- 生产- 现场控制- 信息系统-订单信息系…

NFS共享存储服务配置实践

一、NFS 1.NFS定义 NFS(Network File System)网络文件服务:基于TCP/IP传输的网络文件系统协议,NFS服务的实现依赖于RPC(Remote Process Call)远端过程调用:通过使用NFS协议,客户机…

02、Kafaka 简介

02、Kafka 简介 1、 Kafka 简介 Apache Kafka 是一个分布式的发布-订阅消息系统,最初由 LinkedIn 公司开发,并在 2010 年贡献给了 Apache 软件基金会,成为一个顶级开源项目。Kafka 设计之初是为了满足高吞吐量、可扩展性、持久性、容错性以…