leetcode 59 螺旋数组
使用malloc函数分配二维数组内存
使用内存时出现指针越界
凡是使用了二维数组的都显示缓冲溢出的报错
请问怎么分配二维数组的内存 并检查内存分配是否有效
int** generateMatrix(int n, int* returnSize, int** returnColumnSizes) {
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);
for (int k = 0; k < n; k++)
{
*(res + k) = (int*)malloc(sizeof(int) * n);
}
if (*res == NULL)
exit(1);
//二维数组内存的动态分配
while (loop--)
{
i = startx;
j = starty;
// 下面开始的四个for就是模拟转了一圈
// 模拟填充上行从左到右(左闭右开)
for (j = starty; j < n - offset; j++) {
res[startx][j] = count++;
}
// 模拟填充右列从上到下(左闭右开)
for (i = startx; 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++;
}
if (n % 2)
res[mid][mid] = count;
return res;
}