ragazzi...negli array multidimensionali come si alloca e dealloca? xD

codice:
char ** ehi;
ehi = new char * [100]:

for(int i = 0; i < 100; i++)
    ehi[i] = new char [30];

//così in teoria ho 100 stringhe da 30 caratteri...ma per deallocarle??
//e sinceramente non sono sicuro che si faccia proprio così!

delete [] ehi; ???

OPPURE

for(int i = 0; i < 100; i++)
    delete ehi[i] [];

delete [] ehi;

chiaritemi un po' le idee perpiacre