【发布时间】:2013-10-22 18:10:18
【问题描述】:
我需要编写一个使用 malloc 创建双指针的函数。
这就是我像往常一样声明我的双指针的方式:
double **G; //Create double pointer to hold 2d matrix
*G = malloc(numNodes * sizeof(double*));
for(i = 0; i < numNodes; i++)
{
G[i] = malloc(numNodes*sizeof(double));
for (j = 0; j < numNodes; j++)
{
G[i][j] = 0;
}
}
现在我尝试将其替换为:
double **G;
mallocDoubleArr(G, numNodes);
函数为:
void mallocDoubleArr(double **arr, int size)
{
int i, j;
*arr = malloc(size * sizeof(double*));
for(i = 0; i < size; i++)
{
arr[i]= malloc(size*sizeof(double));
for (j = 0; j < size; j++)
{
arr[i][j] = 0;
}
}
}
为什么这不起作用?
【问题讨论】:
-
您可以使用
calloc节省一些工作。它基本上与malloc做同样的事情,但也将内存设置为零,这意味着您可以消除最里面的for循环。