Выражение new T[n] может или не может инициализировать каждый объект в массиве, в зависимости от того, что T.
Как воспроизвести это поведение инициализации с помощью allocator?
struct Foo
{
int x;
Foo() : x(1)
{ }
};
Foo *p = new Foo[1];
assert(p[0].x == 1);