最近,我遇到了对new运算符的异常使用,以重新初始化C ++类,其代码如下:
#include <iostream>
struct Test { Test() { std::cout<<"Test Ctor\n"; } };
int main()
{
Test t ;
new (&t) Test;
return 0 ;
}
Run Code Online (Sandbox Code Playgroud)
如果运行此代码,则会两次调用Test ctor。在这种情况下,似乎“ new”运算符正在使用指向对象的指针作为内存源,而不是分配新内存,valgrind确认没有内存泄漏。
有人可以阐明“新”运算符的用法吗?
此运算符称为“新放置”。它在给定的地址上运行对象的构造函数,而无需事先分配内存。例如,当首先分配一个大数组,然后在其上构造许多对象时,可以使用它。
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |