C++ new 和 delete 的讲解

本文详细介绍了C++中new和delete的相关知识点,包括new operator、operator new、placement new、operator delete、delete operator以及数组的new和delete。重点讨论了new与malloc的区别,如内存分配位置、返回类型安全性、内存分配失败处理和是否指定内存大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

运算符 new 和 delete 看起来很简单,但是它们也有不少的知识点。对于new来说就有 new operator、operator new、placement new 和 new operator[]等。对于 delete 也有 delete operator、poerator delete、delete operator[] 等。下面就进行按个整理。

1、new operator

平时申请动态内存的 new 操作就是new operator。它其实由两个步骤完成:

1、分配足够的内存,用来放置某类型对象
2、调用构造函数,为刚才分配内存中的那个对象设定初值

new operator 调用某个函数,执行内存分配的动作,这个函数就是 operator new。

2、operatr new

上面说了一个分配内存的函数叫 operator new ,可以用来改变内存分配行为。其函数声明通常为:

void* operator new( size_t size);

此函数返回一个指针,指向一块原始的、未设初始值的内存。size_t是分配内存的大小。

你可以对 operator new 重载,加上额外的参数,但第一个参数类型必须总是 size_t。

和malloc一样,operator new 唯一的任务就是分配内存。它不知道什么时候进行初始化操作。

3、placement new

在已分配好的内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值