Thank you (and thank you Lynton!) for your help. I have a slightly
different methodology (I've not included the class that I defined that make
this actually work, but you get the idea):
#include <iostream>
#include <ctime>
#include <string>
#include <sstream>
#include <netcdf>
using namespace std;
using namespace netCDF;
using namespace netCDF::exceptions;
int main()
{
/* Instance of an OPeNDAP URL based on a class I've defined*/
dap_url dapfile;
for (int k = 0; k < 10; k++) {
/* dap_url class contains a get function that returns a URL string*/
NcFile dataFile(dapfile.get(), NcFile::read);
/* Do something with the file */
/* dap_url class contains a method to increment, so that the next
call to the get() method returns a different file */
dapfile.addtoday(1);
}
return 0;
}
...but it's nice to know that the destructor is called at the end of each
loop.
Taylor
On Wed, Jan 30, 2013 at 1:18 PM, Russ Rew <russ@xxxxxxxxxxxxxxxx> wrote:
> Taylor,
>
> > To finish up with my question, if I can not manually close a file, if I
> > open a NEW file with the same handle 'ncfile' (imagine the small code
> > snippet that I included earlier being inside a loop ), will this
> deallocate
> > the memory used by the earlier instance? I'd like to open (and close)
> > several files in sequence and would like to minimize memory usage.
>
> Here's the response from Lynton Appel:
>
> ... The following will loop through a a set of files. At each pass
> through the loop, the destructor functions for NcDim and NcFile are
> called; in particular the NcFile destructor will issue a call to
> nc_close. So, in my view the API is working correctly.
>
> #include <string>
> #include <iostream>
> #include <netcdf>
>
> using namespace std;
> using namespace netCDF;
>
>
> int main(int argc, char* argv[])
> {
> char* fileName[] = {"efitOut.nc","efitOut2.nc"};
> int i;
> for(i=0;i<2;i++)
> {
> NcFile ncFile(fileName[i],NcFile::replace);
> NcDim timeDim(ncFile.addDim("time",2));
> }
> return 1;
> }
>
> --Russ
>
--
Taylor Binnington
e. tbinnington@xxxxxxxxx
c. 647 926 4144