I need to construct an array of objects from a previously allocated block of memory. However, I cannot understand in what way ::operator new[]() is different from <
The point of using new [] is that it calls the constructor for each and every element of the array being allocated. delete[] does the same for the destructors.
You're using placement new and manually calling the constructors and destructors, missing the whole point.