Originally Posted by
cyberfish
That's not the problem. It's deallocated when the scope ends.
It's probably in the evaluation function.
Code:
evalue function:
usint** csMartrix(char **p,usint Punish,int *e)
{
usint equalPunish = 10;
usint gapPunish = 5;
uint psNumber = caculateCombNum(e[1]);
uint m = 0;
usint *........ = (usint **) calloc (e[0],sizeof(usint*));
usint preLineScore[psNumber];
usint *st = (usint *) calloc (psNumber,sizeof(usint));
for( uint pi = 0; pi < psNumber; ++pi) { preLineScore[pi] = 0; st[pi] = 0; }
........ = st;
for( uint i = 0; i < e[0]; ++i )
{
m = 0;
usint *s = (usint *) calloc (psNumber,sizeof(usint));//if ( i%1000 == 0 ) printf("%d\n",i);printf("%d %d\n",psNumber,psNumber*sizeof(usint));
int n = i+1;
if ( s == NULL ) { printf("malloc memory error.\n");exit(0); }
//printf("%d\n",n);
ss[n] = s ; //*(ss+n) = s;
for ( uint j = 0; j < e[1]-1; ++j)
{
char a = p[i][j];//char a = *(*(p+i)+j);
for ( uint k = j+1; k < e[1]; ++k)
{
char b = p[i][k];
if ( a == '-' || a == '?' )
{
s[m] = preLineScore[m]+gapPunish;
preLineScore[m] = s[m];//printf("%d %d\n",i,m);//*(s+m) = gapPunish;s[i][m] = 0;
}else if ( b == '-' || a == '?' )
{
s[m] = preLineScore[m]+gapPunish;
preLineScore[m] = s[m];
}else if ( a == b )
{
s[m] = preLineScore[m]+equalPunish;
preLineScore[m] = s[m];
}else
{
s[m] = preLineScore[m]-Punish;
preLineScore[m] = s[m];
}
++m;
}
}
}
return ss;
}