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
。