Memory leak in getSpace?


I'm using HDF5 1.8.15-patch1 whose library version is 10.0.1 (C++). OS is a Debian Wheezy.

I have a very simple test code that is trying to find a possible memory leak I'm observing in the code.

H5File file(...);

for (int i = 0; i < 1000; i++)
DataSet ds = file.openDataSet("MyDS"); // (1) intentionally kept inside the loop [see note below]
DataSpace dataspace(ds.getSpace()); // (2)

// doSomething

dataspace.close(); // (3)
ds.close(); // (4)


This program runs for 20sec and I keep seeing physical memory increasing every second. If line (2) is commented out, memory footprint stays at the same level throughout the whole program execution.


- Version 1.8.16 (C++ API) is removing memory leaks as per this release doc ( Would this update also fix the getSpace() call?

- There is an old post in StackOverflow that shows exactly this problem I'm having ( But there is no good answer for that.

- I was originally writing data to a dataset in that loop above. Then, I read this page (, its third bullet in section Open Objects) and noticed that I was not closing the dataspace. But that didn't bring any positive effect unfortunately. Memory still keeps going up.

- If I call file.getObjCount() inside that loop, I see it returns 1. The call file.getObjCount(H5F_OBJ_FILE) also returns 1, meaning that it's only the file that is opened.

- The code snippet above is just an example and what is inside the loop (not the loop itself) is actually inside a wrapper that abstracts the HDF5 library from the client. So, I don't know if the wrapper user will use that inside a loop or not. That's why I want to intentionally keep lines (1, 2, 3 and 4) inside the loop.

Could anyone please shed some light on this?

Carlos Rocha