Pero es que tal y como lo haces estás dejando unas lagunas de memoria, aunque no las veas.
Ten en cuenta que cada vez que haces un new, tienes que hacer un delete para liberar la memoria.
EDITO:
Tienes que hacer ambas cosas:
Código C++:
Ver originalfor (int i = 0; i<1000; i++){
arrayNombres[i]->clear();
delete arrayNombres[i];
}