summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2014-04-11 14:48:31 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2014-04-11 14:48:31 (GMT)
commit8a524752454c04a07a378b39abc929fd8948d91b (patch)
treee6ad7cc080461c68bdc7dda04df9da07026ce3a2 /src
parent6240fb24e6e06039dada4bc7e23ca1a211a0ab2c (diff)
downloadhdf5-8a524752454c04a07a378b39abc929fd8948d91b.zip
hdf5-8a524752454c04a07a378b39abc929fd8948d91b.tar.gz
hdf5-8a524752454c04a07a378b39abc929fd8948d91b.tar.bz2
[svn-r25014] Purpose:
Merge of r24937 from the trunk Adds H5free_memory to the API. This function should be used to free memory allocated by the library (e.g., returned values from H5Tget_tag, H5Pget_class_name, etc.). This is mainly to help Windows applications deal with multiple CRT instances, but can also be helpful when a debug memory manager is being used or when the HDF5 API is being wrapped for managed languages like Python and Java. Tested on: 32-bit LE linux (jam) with fortran and C++ 64-bit BE linux (ostrich) 64-bit LE linux (koala)
Diffstat (limited to 'src')
-rw-r--r--src/H5.c25
-rw-r--r--src/H5public.h1
2 files changed, 26 insertions, 0 deletions
diff --git a/src/H5.c b/src/H5.c
index 1c6cae1..6354ad0 100644
--- a/src/H5.c
+++ b/src/H5.c
@@ -804,3 +804,28 @@ H5close(void)
FUNC_LEAVE_API_NOFS(SUCCEED)
} /* end H5close() */
+
+/*-------------------------------------------------------------------------
+ * Function: H5free_memory
+ *
+ * Purpose: Frees memory allocated by the library that it is the user's
+ * responsibility to free. Ensures that the same library
+ * that was used to allocate the memory frees it. Passing
+ * NULL pointers is allowed.
+ *
+ * Return: SUCCEED/FAIL
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5free_memory(void *mem)
+{
+ FUNC_ENTER_API_NOINIT
+ H5TRACE1("e", "*x", mem);
+
+ /* At this time, it is impossible for this to fail. */
+ HDfree(mem);
+
+ FUNC_LEAVE_API(SUCCEED)
+} /* end H5free_memory() */
+
diff --git a/src/H5public.h b/src/H5public.h
index 39427ed..4f7e7f7 100644
--- a/src/H5public.h
+++ b/src/H5public.h
@@ -334,6 +334,7 @@ H5_DLL herr_t H5get_libversion(unsigned *majnum, unsigned *minnum,
unsigned *relnum);
H5_DLL herr_t H5check_version(unsigned majnum, unsigned minnum,
unsigned relnum);
+H5_DLL herr_t H5free_memory(void *mem);
#ifdef __cplusplus
}