calculate2 本质上是基于邻居进行矩阵计算。我有一段时间没有写 C 语言了,我想知道每次迭代的 memcpy 是否会成为内存问题,或者我是否应该在每次 k 迭代后释放 tmpMatrix,然后再执行新的 memcpy?
void transform2(int *pMatrix, int iteration)
{
if(iteration == 0)
return;
int fullLength = MATRIX_DIM * MATRIX_DIM;
int tmpMatrix[fullLength];
int start;
int row;
int col;
for(start = 0; start < iteration ; start++)
{
memcpy(tmpMatrix, pMatrix, sizeof(pMatrix[0]) * (fullLength));
for(row = 0; row < MATRIX_DIM ; row++)
{
for(col = 0; col < MATRIX_DIM ; col++)
{
int res = calculate2(pMatrix, tmpMatrix, row, col , iteration);
set_at(pMatrix, res, row, col);
}
}
}
}
另外,如果你们认为有更清洁的方法来处理这个问题,我愿意接受建议。本质上,tmpMatrix 是迭代 1 的前一个矩阵。
PS pMatrix 是一个全局 int *_Matrix 声明,我在 main 的末尾使用 free() 来声明它。