报错:stack-buffer-overflow on address
修改后代码:
bool* checkArithmeticSubarrays(int* nums, int numsSize, int* l, int lSize, int* r, int rSize, int* returnSize){
int temp = 0;
//bool* answer[lSize]; 错误语句
bool* answer=(bool*)malloc(sizeof(bool)*1000); // 修改处1
bool flag = false;
*returnSize = 0;
for (int i = 0; i < lSize; i++){
temp = r[i] - l[i] +1;
//if (check(nums,temp,l[i],r[i])) answer[returnSize++] = true; 错误语句
if (check(nums,temp,l[i],r[i])) answer[(*returnSize)++] = true; //修改处2
//else answer[returnSize++] = false; 错误语句
else answer[(*returnSize)++] = false; //修改处3
}
return answer;
}
*returnSize 是一个整体才能代表值
否则returnSize是一个指针,对*returnSize执行++操作,会造成上溢。
注意!这里的returnSize不是数组!
下面这个例子,则*p++合法。
int a[2]={2,3};
int *p=a; //这里p指向a[0]
*p++; //这里p指向a[1]