filename = myDLG.GetPathName();
CStdioFile fin(filename,CFile::modeRead);
fLength=fin.GetLength();

filenameには500MBのファイルを指定します。
CStdioFile fin(filename,CFile::modeRead);を処理した時点で
メモリは使われて(確保)しまうのでしょうか?

fLength=fin.GetLength();
↑でファイルサイズのチェックをかけてから処理をはじめたいのですが、、、