Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >operator new与new operator

operator new与new operator

作者头像
公众号guangcity
发布于 2021-12-20 12:18:12
发布于 2021-12-20 12:18:12
1.5K00
代码可运行
举报
文章被收录于专栏:光城(guangcity)光城(guangcity)
运行总次数:0
代码可运行

大家好,我是光城,很久没更新C++文章了,今天更新一篇内存分配相关的问题。

1.operator new

operate new 是一个分配原始内存的函数——至少在概念上,它与 malloc() 没有太大区别。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char *x = static_cast<char *>(operator new(100));

它的函数原型为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void *operator new(size_t);

当然,重载operator new(全局或类),还需要/需要重载匹配的operator delete。

2.new operator

new operate通常用于创建对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my_class *x = new my_class(0);

那么现在你应该了解这两个的区别了。

总结:两者的区别在于 operator new 只分配原始内存,没有别的。new operator首先使用 operator new 分配内存,然后它调用正确类型的对象的构造函数,因此结果是在该内存中创建的真实活动对象。如果该对象包含任何其他对象(嵌入的或作为基类),则这些构造函数也会被调用。

new operator:它先调用operator new分配内存,然后调用构造函数初始化那段内存。

operator new:可以重载,用于实现不同的内存分配行为。

那么问题来了,placement new与这两个的区别是什么呢?欢迎留言交流。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光城 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C++内存管理(new operator/operator new/operator delete/placement new)
我们平时使用的new是new操作符(new operator),就像sizeof一样是语言内置的,不能改变它的含义,功能也是一样的
WindSun
2019/09/02
1.7K0
C++内存管理(new operator/operator new/operator delete/placement new)
C++ 内存管理(一)
在编程时可以通过上图的几种方法直接或间接地操作内存。下面将介绍四种C++内存操作方法:
公众号guangcity
2019/09/20
1.6K0
C++ 内存管理(一)
C++ new的三种面貌
C++中使用new运算符产生一个存在于Heap(堆)上对象时,实际上调用了operator new()函数和placement new()函数。在使用new创建堆对象时,我们要清楚认清楚new的三种面貌,分别是:new operator、operator new()和placement new()。
恋喵大鲤鱼
2018/08/03
5.6K0
C++ new的三种面貌
C++ new的三种面貌
C++中使用new运算符产生一个存在于Heap(堆)上的对象时,实际上调用了operator new()函数和placement new()函数。在使用new创建堆对象时,我们要清楚认清楚new的三种面貌,分别是:new operator、operator new()和placement new()。
恋喵大鲤鱼
2019/02/22
6000
C++ new的三种面貌
C++内存管理笔记
內存是计算机中的“脑”吗?CPU才是脑,CPU才是计算机的三魂六魄。但若沒有內存,一切只存在于虚无缥缈间,等同 于不存在。C++有一个很大的优势是用户可以动态分配内存,并加以控制,以达到最优性能。对于一个C++程序员,对内存有深厚的了解将使你的C++功力更上一层楼。而这篇文章则是分享学习侯捷老师的内存管理课的笔记,在此分享,希望各位学习内存管理有所帮助。
ClearSeve
2022/02/11
4890
C++内存管理笔记
从零开始学C++之运算符重载(四):类型转换运算符、*运算符重载、->运算符重载、operator new 和 operator delete
该文摘要总结
s1mba
2017/12/28
7480
从零开始学C++之运算符重载(四):类型转换运算符、*运算符重载、->运算符重载、operator new 和 operator delete
C++的new和delete详解
C++中如果要在堆内存中创建和销毁对象需要借助关键字new和delete来完成。比如下面的代码
欧阳大哥2013
2018/08/22
1.2K0
C++内存管理:深入理解与高效实践
在C++编程的世界里,内存管理是一项至关重要的技能。它不仅是性能优化的关键,更是确保程序稳定性和安全性的基石。C++赋予程序员直接操作内存的能力,这既是一种强大的武器,也可能成为潜在的陷阱。因此,掌握有效的内存管理策略,对于每一位C++开发者来说,都是通往高手之路的必经之路。
suye
2025/05/27
1150
[C++] 深度剖析C_C++内存管理机制
定位new表达式语法:void* operator new(size_t, void* place) noexcept { return place; }
DevKevin
2024/07/25
1310
[C++] 深度剖析C_C++内存管理机制
运算符重载的基本规则和习惯用法是什
在重载时,你不能更改 C++ 中内置类型的运算符的含义,只能对自定义类型[1]的运算符进行重载。也就是,运算符两边的操作数至少有一个是自定义的类型。与其他重载函数一样,运算符只能对一组特定类型参数重载一次。
ClearSeve
2022/02/10
8190
网易面试杂谈
http://blog.csdn.net/silangquan/article/details/18013967
bear_fish
2018/09/18
6950
网易面试杂谈
【C/C++】——小白初步了解——内存管理
特点:如果新大小大于原大小,新分配的内存区域中的内容是不确定的;如果新大小小于原大小,超出的内容将被丢弃。
小李很执着
2024/06/15
1570
C++内存管理
所有的字符串在常量区,而数组的形式,是将常量区中的字符串拷贝到数组中,因此可以修改。 指针是直接指向常量区,因此不可修改。
devi
2021/08/18
5670
C++内存管理深度总结(近万字详解!)
在C语言中,动态内存管理主要通过malloc、calloc、realloc和free这四个函数进行。以下是一个简化的代码示例,展示了如何在C语言中使用这些函数来动态分配、使用和释放内存:
suye
2024/10/16
2760
【C++】内存管理
1. 栈 又叫堆栈 -- 非静态局部变量 / 函数参数 / 返回值等等,栈是向下增长的。
The sky
2023/04/12
7220
【C++】内存管理
C/C++内存管理
选项: A.栈 B.堆 C.数据段(静态区) D.代码段(常量区) globalVar在哪里?____ staticGlobalVar在哪里?____ staticVar在哪里?____ localVar在哪里?____ num1 在哪里?____ char2在哪里?____ *char2在哪里?____ pChar3在哪里?____ *pChar3在哪里?____ ptr1在哪里?____ *ptr1在哪里?____ 是不是有点乱,看一下图解吧。
小志biubiu
2025/02/27
1080
C/C++内存管理
C/C++内存管理
C/C++作为广泛使用的系统级编程语言,提供了直接操控内存的能力,这也意味着开发者需要对内存管理有深刻的理解。本文旨在深入浅出地讲解C/C++内存管理机制,包括内存分布、动态内存分配与释放、以及内存管理的最佳实践。
DevKevin
2024/05/24
860
C/C++内存管理
C++重要知识点小结---3
C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:http://www.cnblogs.com/heyonggang/p/3253036.html 1.什么是智能指针? 智能指针是一个行为类似指针但也提供其他功能的类。 智能指针类实现普通指针行为的类的区别在于:智能指针通常接收指向动态分配对象的指针并负责删除该对象。用户分配对象,但由智能指针类删除它,因此智能指针类需要实现复制控制成员来管理指向共享对
猿人谷
2018/01/17
9910
C++ 万字长文第二篇---拿下字节面试
AVL 是严格的平衡树,因此在插入/删除节点时,根据不同的情况,旋转的次数比红黑树多。
syy
2020/08/18
1.4K0
【C++内存管理】:new与delete,operator new与operator delete
📝前言: 上篇文章【C++高潮:类与对象】我们对C++的类与对象的知识点进行了讲解。 这篇文章我们在C语言内存管理的基础上探讨一下C++内存的管理: 1,C/C++内存分布 2,C语言内存管理 3,C++内存管理方式 4,operator new与operator delete 5,new和delete的实现原理 6,定位new表达式 7,malloc/free和new/delete的区别
用户11029137
2025/03/12
2320
相关推荐
C++内存管理(new operator/operator new/operator delete/placement new)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验