próbowałem delete[] shape ale to nic nie dało
To oczywiste, że nic nie dało, bo próbowałeś usunąć tablicę wskaźników, której nie stworzyłeś na stercie. Jeśli już, to tak:
TShape *shape[10] = { nullptr };
...
for(int i = 0; i < 10; i++)
{
delete shape[i];
shape[i] = nullptr;
}
PS, kod wstawiaj w bloczek {...}