为什么会出现缓冲区溢出(运行时错误)

时间:2021-06-23 06:16:00

标签: c

问题:

给定一个整数 numRows,返回帕斯卡三角形的第一个 numRows。 在帕斯卡三角形中,每个数字都是它正上方的两个数字之和

** 5 行帕斯卡三角形示例:** [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

/** 代码应包括:

  • 返回大小为 *returnSize 的数组数组。
  • 数组的大小作为 *returnColumnSizes 数组返回。
  • 注意:返回的数组和*columnSizes数组都必须被malloced, 假设调用者调用 free()。 */

我遇到的错误: 地址消毒剂::堆栈缓冲区溢出。

为什么会出现此错误?

回答我做了:

 int** generate(int numRows, int* returnSize, int** returnColumnSizes){
    int **p=(int**)malloc(numRows*sizeof(p));
    *returnSize=numRows;
    int i=0, j;
    *returnColumnSizes = (int*)malloc(sizeof(int)*numRows);
    for(i=0;i<numRows;i++)
    {
        p[i]=(int*)malloc((i+1)*sizeof(int));
        p[i][0]=1;
        if(i>=1)
        {
            p[i][i]=1;
        }
        
        for(j=1;j<=i-1;j++)
        {
            p[i][j]=p[i-1][j-1]+p[i-1][j];
        }
        *returnColumnSizes[i]=i+1;
    }
    return p;
}

错误: 地址清理器::堆栈缓冲区溢出

0 个答案:

没有答案