当泄漏我有它创建一个二维数组的函数:存储器分配存储器
float** createMatrix(int x, int y){
float** array= malloc(sizeof(float*) * y);
for(int i=0; i<y; i++)
array[i] = malloc(sizeof(float) * x);
return array;
}
现在我可以创建一个二维数组:
float** temp=createMatrix(2,2);
我也有一个功能,例如,其调换我的 “矩阵”(二维数组):
float** matrixTranspose(float** m, int x, int y){
float** result=createMatrix(y, x);
for(int i=0; i<y; i++){
for(int j=0;j<x; j++) result[j][i]=m[i][j];
}
return result;
}
现在,如果我这样做:
temp=matrixTranspose(temp,2,2);
以前分配给temp的旧内存会发生什么?我的转置功能分配新的内存块。很显然,我不得不以某种方式在换位后释放“旧温度”,但是如何(优雅地)呢?
是的,这听起来很明显。我只是想我可能会以某种方式避免需要临时指针。听起来像你不能。感谢你们所有人,但自从你们第一次以来,我会接受你的回答。 – 2012-08-17 06:35:32