
On Tue, Jan 15, 2013 at 3:52 AM, Harry van Haaren <harryhaaren@gmail.com> wrote:
Hi All,
Summary: Boost::bind() allocates memory on the heap. In my situaion it is necessary to use manual memory pool instead of heap allocation, to conform with real-time timing requirements. (no malloc() calls allowed in real-time code)
A solution might be writing a custom allocator for the boost::bind()'s data, and use a pre-allocated memory pool with the "placement" new( void* ) to write directly into it.
I've found that there was a discussion on std::allocator support for std::bind and std::function here: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2308.html
I'm not very familiar with the internals of bind() and Function in general, hence advice is appreciated. What is the status of boost::bind() and custom allocators? Is there a chance this could work? Am I missing some "easy" workaround or solution?
Boost.Bind doesn't allocate memory, unless you bind some objects that do. Boost.Function does allocate memory to store the adopted function object, and it does support custom allocators. You can specify the allocator as the second argument of boost::function constructor.