news 2026/7/14 19:29:59

内容7 内存管理 1​​

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
内容7 内存管理 1​​

上图中new A(1)不是创建一个匿名对象,而是按照类创建了一个对象

以上程序会因为申请内存过大而失败,假设不管,就会抱错。这里如下图显示有异常,必须捕获,不然终止报错

尝试捕获,exception是库中异常的类型,这里先写就行

当运行到某处申请失败时就会直接跳转到catch,再继续走

再次运行如下,显示申请内存失败

newdelete是用户进行动态内存申请和释放的操作符
operator newoperator delete是系统提供的全局函数
new在底层调用operator new全局函数来申请空间,
delete在底层通过operator delete全局函数来释放空间

new创建一个对象时,返回一个指向该对象的地址。

使用delete时,直接从new开辟空间后返回的指针处开始析构一个对象,然后free一个对象。

当用new创建多个自定义类型时,会额外开辟4字节用来存放对象个数(为了后面使用delete[]时,让编译器知道要析构几个对象),返回一个指向首个对象的地址(不是开辟空间的开端,而是中端)。

用delete[]释放时,会将返回的指针自动向前移动4字节进行释放,读取到要析构几个对象,然后再进行free释放。

注意free时只能 从开辟的完整空间 的开头处开始释放空间,否则报错

类内没有析构函数,编译器会进行优化行为(认为它没有申请资源,不会调用析构函数,所以new创建多个对象时也就不需要额外开辟4字节用来存放对象个数),此时返回的是开辟的完整空间的开头处,使用delete,不会调用析构函数,直接free new开辟的整个完整空间,没报错,程序正常运行。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 19:28:54

pandas字符串操作太慢?用Polars和PyArrow提速20倍实战指南

1. 项目概述:为什么 pandas 字符串操作慢得让人抓狂?你有没有在处理用户昵称、日志文本、地址字段或者商品描述时,被 pandas 的.str方法卡到怀疑人生?我第一次用df[name].str.replace(r\s, , regexTrue)清洗 50 万行用户数据时&a…

作者头像 李华
网站建设 2026/7/14 19:28:16

鸿蒙应用开发 @Builder 使用教程:从入门到精通

文章目录一、引言二、Builder 装饰器简介主要特点三、基础用法3.1 组件内 Builder(私有)3.2 全局 Builder四、参数传递:按值传递 vs 按引用传递4.1 按值传递(默认)4.2 按引用传递(响应外部变化)…

作者头像 李华
网站建设 2026/7/14 19:23:52

LangChain单页速查表:LCEL编码直觉与RAG/Agent生产实践

1. 这张单页速查表,真能让我少写80%的LangChain胶水代码?“LangChain Cheatsheet — All Secrets on a Single Page”——看到这个标题,我第一反应不是兴奋,而是皱眉。过去三年,我在金融风控、智能客服和内部知识库三个…

作者头像 李华
网站建设 2026/7/14 19:22:42

基于ADC12DJ5200SE的宽带射频采样接收机设计实战指南

1. 项目概述与核心价值在雷达、卫星通信和高端测试测量领域,我们正处在一个对信号带宽和瞬时动态范围要求越来越苛刻的时代。传统的超外差接收机架构虽然成熟,但其复杂的混频链路、镜像抑制滤波器和本振源设计,不仅增加了系统的体积、功耗和成…

作者头像 李华