非动态分配的数组不应过大
2.21 ID_unsuitableArraySize
对于不具备动态存储期的数组,如果分配失败,难以做出相应处理。
应重点关注大型数组,评估其在运行时的最大资源占用是否符合执行环境的要求。
示例:
void foo() {
int arr[1024][1024][1024]; // Non-compliant, too large
....
}
如果条件允许应改用动态内存分配,对分配失败的情况作出处理:
void foo() {
int* arr = (int*)malloc(1024 * 1024 * 1024 * sizeof(int)); // Compliant
if (arr) {
.... // Normal procedure
} else {
.... // Handle allocation failures
}
}
配置
maxStaticArraySize: 静态数组空间之和的上限,超过则报出
maxLocalArraySize: 函数内局部数组空间之和的上限,超过则报出
maxLocalThreadArraySize: 具有线程存储期的数组空间之和的上限,超过则报出