Delete TFile doesn't work. SysError in <TFile::TFile>: file ~~.root can not be opened for reading (Too many open files)

Question from this post:

How did TH1::AddDirectory(kFALSE) help?
Furthermore,
TFile *file = TFile::Open(filename.c_str());
yields segment fault whereas
file = new TFile( filename.c_str() , “read”);
does not, if the root file exists. The constructor gives me a chance to check for null pointer before crashing.