首页 > 后端开发 > C++ > C 的'new”运算符和'operator new”有什么区别?

C 的'new”运算符和'operator new”有什么区别?

Barbara Streisand
发布: 2024-12-22 15:44:10
原创
716 人浏览过

What's the Difference Between C  's

理解 C 语言中“New Operator”和“Operator New”的区别

“new”运算符和“operator new”在 C 中,在内存管理中执行不同的函数以动态创建对象。

运算符新功能:原始内存分配

“Operator new”是一个低级函数,负责从操作系统分配原始内存。它的功能与“malloc”函数类似,提供指定大小的内存块,而不调用任何构造函数或析构函数。您可以直接调用“operator new”,如下所示:

char *x = static_cast<char *>(operator new(100));
登录后复制

重载“operator new”允许您自定义特定类型或全局的内存分配。它的签名通常是:

void *operator new(size_t);
登录后复制

New 运算符:使用构造函数创建对象

相反,“new”运算符通常用于动态创建对象。它首先调用“operator new”来分配内存,然后通过调用适当的构造函数来初始化对象。此过程还涉及按正确的顺序调用嵌入对象构造函数和基类构造函数。

例如:

my_class *x = new my_class(0);
登录后复制

关键区别

“operator new”和“new”运算符之间的主要区别在于,前者仅分配原始内存,而后者将内存分配与对象创建和初始化结合在一起。 “new 运算符”提供了对内存管理的更多控制,而“new”运算符通过处理内存分配和对象初始化来简化对象创建。

以上是C 的'new”运算符和'operator new”有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板