关于内存释放的问题 (另:谁有大数乘法函数 可以验证一下100的阶乘,看我算的对不对)
百度一下 heap corruption detected 会很多项目 大约知道怎么回事了 不知道咋解决(如何修改代码,可以避免这个错误)函数如下:
程序代码:
#define max 500
//字符串乘法 乘数与被乘数都是多位数
void strmuls(char* dest1,char* dest2,char* dest3)
{
char* buffer[max];
int k;
for(k=0;k<max;k++) buffer[k]=(char*)malloc(sizeof(char)*max);
for(k=0;k<max;k++) memset(buffer[k],'\0',max);
char buf[max]={'\0'};
strcpy(buf,dest1);
int len=strlen(dest2);
int i=0,j=0;
len--;
for(;len>=0;len--)
{
strmul(dest1,dest2[len]); //自定义函数 计算一个字符串和0--9相乘
strmovl(dest1,i); //自定义函数 移位(末尾填'0')
stralignr(dest1,max); //自定义函数 是一个对齐函数 空位用'0'补
strcpy(buffer[i],dest1);
i++;
strcpy(dest1,buf);
}
int flag=0;
dest3[max]='\0';
for(k=max-1;k>=0;k--)
{
int tmp=0;
for(j=0;j<i;j++)
{
tmp+=buffer[j][k]-0x30;
}
tmp+=flag;
flag=tmp/10;
dest3[k]=tmp%10+0x30;
}
for(k=0;k<max;k++) free(buffer[k]);
}
我用这个函数计算100!=9332621544394415268169923885626670049071596826438162146859296389521759999322
9915608941463976156518286253697920827223758251185210916864000000000000000000000000
结果貌似没啥错误,就是释放内存会出错
[ 本帖最后由 wp231957 于 2014-3-28 09:55 编辑 ]




