代码意图为动态申请一个二维矩阵,并且做运算操作,最后输出结果并释放内存。
奇怪的是该代码在PC上运行内存没有增长,在bf592板子上运行,while循环很快就停止了,判断可能是内存泄露,但是找不到原因。
代码如下。
#include <stdio.h>
#include <stdlib.h>
#include"math.h"
double** s()
{
int i,j;
double **R;
R=matrix(2,2);
for( i = 0; i < 2; i++)
{
for( j = 0; j < 2; j++)
{
R[i][j]=1;
}
}
double **Z=NULL;
Z=addMat(R,R,2,2);
for( j = 0; j < 2; j++)
{
free(R[j]);
R[j]=NULL;
}
free(R);
R=NULL;
return R;
}
void main()
{
int i,j;
int count=0;
while(1)
{
double **W;
W=s();
for( j = 0; j < 2; j++)
{
free(W[j]);
}
free(W);
}
}
//下面为以上s()用到的两个子函数
//1.矩阵加法操作
double** addMat(double **mat1, double **mat2, int row, int col)
{
double **Rmat;
Rmat=matrix(row,col);
int i,j;
for( i = 0; i < row; i++)
{
for( j = 0; j < col; j++)
{
Rmat[i][j]= mat1[i][j] +mat2[i][j];
}
}
return Rmat;
}
//2.申请二维矩阵
double** matrix(int m,int n)
{
int i,j;
double **mat;
mat=(double**)malloc(m*sizeof(double*));
for(i=0;i<m;i++)
mat[i]=(double*)malloc(n*sizeof(double));
return mat;
}