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

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

Barbara Streisand
发布: 2024-12-11 00:16:08
原创
494 人浏览过

What's the Difference Between `operator new` and the `new` Operator in C  ?

新运算符与新运算符:深入探讨

虽然经常互换使用,但“新运算符”和“新运算符”具有不同的作用在C内存管理中。

运算符New

Operator new 是一个从空闲存储中分配原始内存的函数。它是低级的,概念上类似于 malloc()。然而,它通常直接用于自定义容器或特定场景。运算符 new 可以显式调用为:

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

此外,运算符 new 可以全局重载或为单个类重载,其签名为:

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

New Operator

另一方面,new 运算符通常用于在免费存储上创建对象。与operator new不同,它不是简单地分配内存;它分配内存并调用类构造函数。这会在内存中创建一个完全初始化的对象,包括任何嵌入的对象或从基类继承的对象。

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

主要区别

operator new 和operator new 之间的根本区别new运算符是operator new分配原始内存,而new运算符不仅分配内存而且还在该位置初始化对象。 new 运算符依赖于 new 运算符进行内存分配,但会自动处理对象初始化。

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

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