理解 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中文网其他相关文章!