1

当我运行我的程序时,它只是挂起。我的双指针设置有什么问题吗?如果我将此注释掉,我的程序不会挂起。

double **transverse;
transverse = malloc(rows*sizeof(double*));  //allocate memory to double pointer
for (i = 0; i < rows; i++)
{
    transverse[i] = malloc(rows*sizeof(double*));
    for (j = 0; j < rows; j++)
        transverse[i][j] = 0;
}
4

2 回答 2

4

你的第二次分配是错误的

transverse[i] = malloc(rows*sizeof(double*));

它应该是

transverse[i] = (double*)malloc(rows*sizeof(double));

traverse[i]是 a double *,因此,您需要使用sizeof(double).

于 2013-10-21T20:37:02.153 回答
3
for (i = 0; i < rows; i++)
{
    //Just double for allocating memory for double pointer transverse[i]
    transverse[i] = malloc(rows*sizeof(double));  //<-- remove double*
    for (j = 0; j < rows; j++)
        transverse[i][j] = 0;
}
于 2013-10-21T20:37:08.433 回答