对于给定的n值不会出现缓存溢出的问题
但是n作为函数参数传递时会出现内存溢出的问题
leetcode59题
int** generateMatrix(int n, int* returnSize, int** returnColumnSizes) {
if (n <= 0)
exit(-1); //在开辟内存时使用用户输入的内存数值 需要对其合法性进行判断
*returnSize = n;
**returnColumnSizes = (int**)malloc(sizeof(int*) * n);
if (returnColumnSizes == NULL)
exit(-1);
int i, j;
int mid = n / 2;
int loop = n / 2;
int startx = 0, starty = 0;
int offset = 1;
int count = 1;
int** res = (int**)malloc(sizeof(int*) * n);
if (res == NULL) //表示的是地址为空的情况
exit(1);
int k;
for (k = 0; k < n; k++)
{
res[k] = (int*)malloc(sizeof(int) * n);
(*returnColumnSizes)[k] = n;
if (returnColumnSizes[k] == NULL)
exit(-1);
if (res[k] == NULL)
exit(-1);
}
//二维数组内存的动态分配
while (loop)
{
i = startx;
j = starty;
// 下面开始的四个for就是模拟转了一圈
// 模拟填充上行从左到右(左闭右开)
for (; j < n - offset; j++) {
res[startx][j] = count++;
}
// 模拟填充右列从上到下(左闭右开)
for (; i < n - offset; i++) {
res[i][j] = count++;
}
// 模拟填充下行从右到左(左闭右开)
for (; j > starty; j--) {
res[i][j] = count++;
}
// 模拟填充左列从下到上(左闭右开)
for (; i > startx; i--) {
res[i][j] = count++;
}
startx++;
starty++;
offset++;
loop--;
}
if (n % 2)
res[mid][mid] = count;
return res;
}
问题已解决,不是这个问题,是其他方面的错误