# Extra Clang Tools 22.1.2 documentation

## 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()`).

This check implements R.10 from the C++ Core Guidelines.

There is no attempt made to provide fix-it hints, since manual resource management isn’t easily transformed automatically into RAII.

    // 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

Allocations

  Semicolon-separated list of fully qualified names of memory allocation functions. Defaults to ::malloc;::calloc.

Deallocations

  Semicolon-separated list of fully qualified names of memory allocation functions. Defaults to ::free.

Reallocations

  Semicolon-separated list of fully qualified names of memory allocation functions. Defaults to ::realloc.