news 2026/5/5 22:15:47

20. new关键字

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
20. new关键字

1.new 关键字的核心作用

2.new的常见用法

3.new vs malloc


1.new 关键字

new是c++的动态内存分配运算符,用于在程序运行时从堆内存区域分配指定大小的内存空间 a.对于基本数据类型(int,double)仅分配内存 b.对于自定义结构体/结构体对象,会自动调用构造函数初始化对象 c.最终返回指向该内存空间的指针

2.new的常见用法

1).为基本数据类型分配内存
#include <iostream>usingnamespacestd;intmain(){// 1. 分配单个int类型内存(未初始化)int*p1=newint;*p1=10;// 手动赋值cout<<*p1<<endl;// 输出:10// 2. 分配内存并直接初始化int*p2=newint(20);// 括号内是初始化值cout<<*p2<<endl;// 输出:20// 必须用delete释放内存,否则会内存泄漏deletep1;deletep2;p1=nullptr;// 建议置空,避免野指针p2=nullptr;return0;}


2).为自定义类/结构体分配内存(分配内存)
#include <iostream>#include <string>usingnamespacestd;classPerson{public:// 构造函数Person(stringname,intage):m_name(name),m_age(age){cout<<"Person构造函数被调用"<<endl;}~Person(){cout<<"Person析构函数被调用"<<endl;}voidshowInfo(){cout<<"姓名:"<<m_name<<",年龄:"<<m_age<<endl;}private:stringm_name;intm_age;};intmain(){// 分配Person对象内存,同时调用构造函数初始化Person*p=newPerson("张三",20);p->showInfo();// 输出:姓名:张三,年龄:20// delete会先调用析构函数,再释放内存deletep;p=nullptr;return0;}


3).为数组分配内存
#include <iostream>usingnamespacestd;intmain(){// 分配长度为5的int数组(未初始化)int*arr=newint[5];// 给数组赋值for(inti=0;i<5;i++){arr[i]=i+1;cout<<arr[i]<<" ";// 输出:1 2 3 4 5}cout<<endl;// 分配数组并初始化(C++11及以上支持)int*arr2=newint[3]{10,20,30};for(inti=0;i<3;i++){cout<<arr2[i]<<" ";// 输出:10 20 30}cout<<endl;// 释放数组必须用delete[],不能用delete!delete[]arr;delete[]arr2;arr=nullptr;arr2=nullptr;return0;}


4).避免new分配失败的异常(nothrow版本)默认情况下,new分配内存失败(如堆内存不足),会抛出std::bad_alloc异常;如果不想抛 异常,可使用nothrow版本
#include <iostream>#include <new>// 必须包含此头文件usingnamespacestd;intmain(){// nothrow版本:分配失败返回nullptr,不抛异常int*p=new(nothrow)int[1000000000];// 超大数组,模拟分配失败if(p==nullptr){cout<<"内存分配失败!"<<endl;}else{delete[]p;}return0;}

3.new vs malloc

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

一遍搞定全流程!专科生专属AI论文神器 —— 千笔·专业论文写作工具

你是否在论文写作中感到力不从心&#xff1f;选题无头绪、资料难查找、格式总出错、查重率高得让人焦虑……这些难题是否让你夜不能寐&#xff1f;别再独自挣扎&#xff0c;现在有了更聪明的解决方案——千笔AI。它专为专科生量身打造&#xff0c;从选题到查重&#xff0c;一站…

作者头像 李华
网站建设 2026/4/28 7:46:21

Python Pydantic库深度解析

Pydantic是一个在Python生态中广泛使用的库&#xff0c;特别在Flask开发中&#xff0c;它帮助处理数据验证和配置管理。下面从五个方面详细讲解Pydantic。1. 它是什么Pydantic是一个基于Python类型注解的库&#xff0c;用于数据验证和设置管理。它允许你通过定义类来描述数据的…

作者头像 李华
网站建设 2026/5/3 17:36:57

实测才敢推!专科生专属降AIGC网站 —— 千笔

在AI技术深度渗透学术写作的当下&#xff0c;越来越多的学生开始依赖AI工具辅助完成论文、报告等学术内容。然而&#xff0c;随着查重系统对AI生成内容的识别能力不断提升&#xff0c;如何有效降低AI率和重复率成为摆在学生面前的难题。面对市场上琳琅满目的降AI率与降重复率工…

作者头像 李华
网站建设 2026/4/22 17:28:14

python python-jose库,深度解析

1. 它是什么 python-jose 是一个用于处理 JWT&#xff08;JSON Web Token&#xff09;的 Python 库。JWT 可以理解为一种数字“通行证”&#xff0c;它允许在不同系统之间安全地传递信息&#xff0c;就像现实生活中的证件&#xff08;如身份证&#xff09;包含了你的基本信息且…

作者头像 李华
网站建设 2026/4/29 19:50:53

python python-multipart库,深度解析

处理 Web 表单和文件上传时&#xff0c;服务器需要解析一种特殊的“包裹格式”&#xff0c;这就是 multipart/form-data。python-multipart 就是一个专门高效拆解这种“数据包裹”的 Python 工具。 用一个生活中的场景来类比&#xff1a;你通过邮局寄一个包裹&#xff0c;里面…

作者头像 李华
网站建设 2026/4/28 7:04:03

FastAPI 概述

FastAPI 是一个用于构建网络 API 的现代 Python 框架。它基于标准 Python 类型提示&#xff0c;可以高效地创建高性能、易于维护的接口。你可以把它想象成一个专门为构建 API 而设计的“智能助手”&#xff0c;它理解你定义的数据格式&#xff0c;并自动处理很多常规任务。 主…

作者头像 李华