operator new
Posted shinymood
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了operator new相关的知识,希望对你有一定的参考价值。
document by C++:
系统的有三个声明:
throwing (1) |
void* operator new (std::size_t size); |
---|---|
nothrow (2) |
void* operator new (std::size_t size, const std::nothrow_t& nothrow_value) noexcept; |
placement (3) |
void* operator new (std::size_t size, void* ptr) noexcept; |
定义:
分配存储空间的接口。
Allocate storage space
Default allocation functions (single-object form).
特性:
1.可替换,可重载
2.系统定义的是全局函数
例子:
// operator new example #include <iostream> // std::cout #include <new> // ::operator new struct MyClass { int data[100]; MyClass() {std::cout << "constructed [" << this << "]\n";} }; int main () { std::cout << "1: "; MyClass * p1 = new MyClass; // allocates memory by calling: operator new (sizeof(MyClass)) // and then constructs an object at the newly allocated space std::cout << "2: "; MyClass * p2 = new (std::nothrow) MyClass; // allocates memory by calling: operator new (sizeof(MyClass),std::nothrow) // and then constructs an object at the newly allocated space std::cout << "3: "; new (p2) MyClass; // does not allocate memory -- calls: operator new (sizeof(MyClass),p2) // but constructs an object at p2 // Notice though that calling this function directly does not construct an object: std::cout << "4: "; MyClass * p3 = (MyClass*) ::operator new (sizeof(MyClass)); // allocates memory by calling: operator new (sizeof(MyClass)) // but does not call MyClass‘s constructor delete p1; delete p2; delete p3; return 0; }
以上是关于operator new的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin学习之旅解决错误:kotlin.NotImplementedError: An operation is not implemented: Not yet implemented(代码片段
Operator '||' cannot be applied to operands of type 'bool?' and 'bool?'(代码片段
Operator '||' cannot be applied to operands of type 'bool?' and 'bool?'(代码片段
svn报错cleanup failed–previous operation has not finished; run cleanup if it was interrupted的解决办法(代码片段
new-Operator 大幅增加了 Arduino 草图的大小 - 为啥?
INVALID HEAP ARGUMENT:用 operator new[] 分配,用 operator delete 释放