cppcoreguidelines-no-malloc

此检查处理使用 malloc()realloc()calloc()free() 的 C 样式内存管理。它会发出关于其使用的警告,并尝试建议使用适当的 RAII 对象。此外,它可以配置为检查针对用于内存管理的用户指定函数列表(例如 posix_memalign())。

此检查实现了 C++ 核心准则中的 R.10

没有尝试提供修复提示,因为手动资源管理不容易自动转换为 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));

选项

Allocations

内存分配函数的全限定名,以分号分隔。默认值为 ::malloc;::calloc

Deallocations

内存分配函数的全限定名,以分号分隔。默认值为 ::free

Reallocations

内存分配函数的全限定名,以分号分隔。默认值为 ::realloc