【发布时间】:2013-11-06 18:38:20
【问题描述】:
我有一个关于返回整数点 2D 的问题。假设我有一个表示二维矩阵的整数点 2D。我想转置矩阵。如果我使用正常方式(返回 int**),我已经成功运行,但问题是 malloc 时无法删除内存。所以我想将此函数转换为使用引用函数作为void transposeMatrix(....)返回void //它将返回矩阵G的转置
int** transposeMatrix(int** G,int nRowSize,int nColumnSize)
{
int **GT=NULL;
int nRowIndex,nColumnIndex;
GT= (int**)malloc(sizeof(int*) * nRowSize);
memset(GT, 0, sizeof(int*) * nRowSize);
for (nRowIndex = 0; nRowIndex < nRowSize; nRowIndex++)
{
GT[nRowIndex] = (int*)malloc(sizeof(int) * nColumnSize);
for (nColumnIndex = 0; nColumnIndex < nColumnSize; nColumnIndex++)
{
GT[nRowIndex][nColumnIndex]=G[nColumnIndex][nRowIndex];
}
}
return GT;
}
你能帮帮我吗?
【问题讨论】:
-
C++可以使用。但我认为 malloc 和 new 是一样的。所以我标记 C++
-
你希望它返回
G,还是引用G并返回void? -
这将是可怕的 C++ 代码。如果您想使用 C++,请将其 only 标记为 C++,您将得到正确的解决方案。
-
在您的调用程序使用转置矩阵完成之前,您不得删除分配的内存 - 如果您这样做,您将无法使用。结果再说了。您应该编写一个“delete2D”函数,在完成转置后正确撤消内存分配 - 除此之外您很好。
-
不,在函数外释放内存不是“malloc 问题”。
标签: c