MRPT  1.9.9
Classes | Macros | Functions
Memory utilities

Detailed Description

Header: #include <mrpt/system/memory.h>.

Library: [mrpt-system]

Collaboration diagram for Memory utilities:

Classes

class  mrpt::system::CGenericMemoryPool< DATA_PARAMS, POOLABLE_DATA >
 A generic system for versatile memory pooling. More...
 

Macros

#define mrpt_alloca(nBytes)   ::malloc(nBytes)
 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". More...
 
#define mrpt_alloca_free(mem_block)   free(mem_block)
 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. More...
 

Functions

unsigned long mrpt::system::getMemoryUsage ()
 Returns the memory occupied by this process, in bytes. More...
 
template<std::size_t alignment, typename T , typename = std::enable_if_t<std::is_pointer<T>::value>>
bool mrpt::system::is_aligned (T ptr)
 

Macro Definition Documentation

◆ mrpt_alloca

#define mrpt_alloca (   nBytes)    ::malloc(nBytes)

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.
    See also
    mrpt_alloca_free

Definition at line 41 of file memory.h.

Referenced by mrpt::maps::COccupancyGridMap2D::internal_insertObservation().

◆ mrpt_alloca_free

#define mrpt_alloca_free (   mem_block)    free(mem_block)

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.

See also
mrpt_alloca

Definition at line 59 of file memory.h.

Referenced by mrpt::maps::COccupancyGridMap2D::internal_insertObservation().

Function Documentation

◆ getMemoryUsage()

unsigned long mrpt::system::getMemoryUsage ( )

Returns the memory occupied by this process, in bytes.

Definition at line 114 of file memory.cpp.

References _PROCESS_MEMORY_COUNTERS::cb, mrpt::system::os::fclose(), mrpt::system::os::fopen(), mrpt::system::CAuxPSAPI_Loader::GetProcessMemoryInfo(), MEM, MRPT_END, MRPT_START, and _PROCESS_MEMORY_COUNTERS::PagefileUsage.

Referenced by mrpt::hmtslam::CHMTSLAM::generateLogFiles(), and mrpt::apps::ICP_SLAM_App_Base::run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_aligned()

template<std::size_t alignment, typename T , typename = std::enable_if_t<std::is_pointer<T>::value>>
bool mrpt::system::is_aligned ( ptr)

Definition at line 69 of file memory.h.




Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 1d7b2c899 Thu Nov 14 18:59:07 2019 +0100 at jue nov 14 19:15:09 CET 2019