新运算符与新运算符:深入探讨
虽然经常互换使用,但“新运算符”和“新运算符”具有不同的作用在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中文网其他相关文章!