The GUDHI library is a generic open source C++ library, with a Python interface, for Topological Data Analysis (TDA) and Higher Dimensional Geometry Understanding.
In Simple_object_pool, I specified default_user_allocator_malloc_free because it was slightly faster than the default. Now that we are increasing its use, I am worried that this choice may cause problems, and we should investigate what happens for out-of-memory. Supposedly, the default is based on new/delete and should throw an exception, whereas the malloc version may crash. In that case, it may be safer (particularly for the Python module) to go back to the default.
Other things to look at around there:
Pool_cell_constructor: just add to Simple_object_pool the functions we are missing to use it directly? (probably not the questionable operator= and swap though)
New_cell_constructor: just std::allocator?
Can we use simple_segregated_storage instead of pool in Simple_object_pool? (probably not worth it, I just mention it as a way to ensure we don't use the questionable parts of boost::pool)
https://github.com/GUDHI/gudhi-devel/blob/1d4421cca1dbb3c290f3b72c2546a30917edfbf7/src/common/include/gudhi/Simple_object_pool.h#L26
In Simple_object_pool, I specified default_user_allocator_malloc_free because it was slightly faster than the default. Now that we are increasing its use, I am worried that this choice may cause problems, and we should investigate what happens for out-of-memory. Supposedly, the default is based on new/delete and should throw an exception, whereas the malloc version may crash. In that case, it may be safer (particularly for the Python module) to go back to the default.
Other things to look at around there: