局部数组不应过大
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
}
}
配置
maxLocalArraySize: 函数内局部数组空间之和的上限,超过则报出