new actually does work in arduino. it is defined in arduino/hardware/arduino/avr/cores/arduino/{new.h, new.cpp} using malloc. It is not part of avr-libc though (which your link concerns) and has not always been added by arduino.
Both of these work for me:
namespace{ //namespace to deal with .ino preprocessor bug
class foo{
public:
int bar;
foo(int a){
bar = a;
}
};
}
...
//using new
foo *a = new foo[3]{{1},{2},{3}};
//How I would probably do this with malloc
foo *b = (foo*) malloc(sizeof(foo)*3);
b[0] = foo(02);
b[1] = foo(14);
b[2] = foo(28);
Placement new is not defined right now. I know that copying isn't quite the same, but it should work in most cases.
Of course, if you know exactly how long you want the array to be at compile time, you should probably make it a static/global variable so that you avoid using dynamic memory and the sketch ram usage number will be closer to correct.