Use the std::allocator<MyClass> for this.
std::allocator<MyClass> alloc;
MyClass* ptr = alloc.allocate(2); //allocate
for(int i=0; i<2; ++i) {
alloc.construct(ptr+i, MyClass(1, i)); //construct in C++03
//alloc.construct(ptr+i, 1, i); //construct in C++11
}
//use
for(int i=0; i<2; ++i) {
alloc.destroy(ptr+i); //destruct
}
alloc.deallocate(ptr); //deallocate
Note that you don't have to construct all that you allocate.
Or, better yet, just use std::vector.
[EDIT]
KerrekSB suggested this as simpler:
MyClass** ptr = new MyClass*[3];
for(int i=0; i<4; ++i)
ptr[i] = new MyClass(1, i);
//use
for(int i=0; i<4; ++i)
delete ptr[i];
delete[] ptr;
It's slightly slower access, but much easier to use.