// classes template <class DATA_PARAMS, class POOLABLE_DATA> class mrpt::system::CGenericMemoryPool; // global functions unsigned long mrpt::system::getMemoryUsage(); template < std::size_t alignment, typename T, typename = std::enable_if_t<std::is_pointer<T>::value> > bool mrpt::system::is_aligned(T ptr); // macros #define mrpt_alloca(nBytes) #define mrpt_alloca_free(mem_block)
unsigned long mrpt::system::getMemoryUsage()
Returns the memory occupied by this process, in bytes.
In platforms and compilers with support to “alloca”, allocate a memory block on the stack; if alloca is not supported, it is emulated as a normal “malloc”.
NOTICE: Since in some platforms alloca will be emulated with malloc, alloca_free MUST BE ALWAYS CALLED to avoid memory leaks. This method MUST BE a macro rather than a function in order to operate on the caller’s stack.
This method must be called to “free” each memory block allocated with “system::alloca”: If the block was really allocated in the stack, no operation is actually performed, otherwise it will be freed from the heap.
This method MUST BE a macro rather than a function in order to operate on the caller’s stack.