Это placement new. Эта версия нового оператора позволяет размещать новые экземпляры в предварительно выделенной памяти. Это очень полезно, когда вы хотите выделить много экземпляров, потому что вы резко сократите количество операций с фактической памятью, что может повысить производительность вашего приложения.
Пример (из Parashift C Справка ++):
#include <new> // Must #include this to use "placement new"
#include "Fred.h" // Declaration of class Fred
void someCode()
{
char memory[sizeof(Fred)]; // Line #1
void* place = memory; // Line #2
Fred* f = new(place) Fred(); // Line #3 (see "DANGER" below)
// The pointers f and place will be equal
...
}
Стоит отметить, однако, что вы должны знать точно сколько места потребности класса и могут варьироваться в зависимости от настроек компилятора/платформы и еще дюжина причин. Так что используйте его только, если вам это нужно, и когда вы действительно знаете, что делаете.
Здесь будут драконы. Вы не хотите его использовать. – ScarletAmaranth
Ваш цитируемый код очень опасен, так как он пытается сделать размещение новым с неинициализированным адресом. Это означает, что вы выполняете построение «MyClass» в случайном, потенциально нераспределенном адресе. – icabod