关于内存释放的问题 (另:谁有大数乘法函数 可以验证一下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 编辑 ]