| .. title:: clang-tidy - cppcoreguidelines-no-malloc |
| |
| cppcoreguidelines-no-malloc |
| =========================== |
| |
| This check handles C-Style memory management using ``malloc()``, ``realloc()``, |
| ``calloc()`` and ``free()``. It warns about its use and tries to suggest the use |
| of an appropriate RAII object. |
| Furthermore, it can be configured to check against a user-specified list of functions |
| that are used for memory management (e.g. ``posix_memalign()``). |
| See `C++ Core Guidelines <https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-mallocfree>`_. |
| |
| There is no attempt made to provide fix-it hints, since manual resource |
| management isn't easily transformed automatically into RAII. |
| |
| .. code-block:: c++ |
| |
| // Warns each of the following lines. |
| // Containers like std::vector or std::string should be used. |
| char* some_string = (char*) malloc(sizeof(char) * 20); |
| char* some_string = (char*) realloc(sizeof(char) * 30); |
| free(some_string); |
| |
| int* int_array = (int*) calloc(30, sizeof(int)); |
| |
| // Rather use a smartpointer or stack variable. |
| struct some_struct* s = (struct some_struct*) malloc(sizeof(struct some_struct)); |
| |
| Options |
| ------- |
| |
| .. option:: Allocations |
| |
| Semicolon-separated list of fully qualified names of memory allocation functions. |
| Defaults to ``::malloc;::calloc``. |
| |
| .. option:: Deallocations |
| |
| Semicolon-separated list of fully qualified names of memory allocation functions. |
| Defaults to ``::free``. |
| |
| .. option:: Reallocations |
| |
| Semicolon-separated list of fully qualified names of memory allocation functions. |
| Defaults to ``::realloc``. |
| |