请问:c或c++运行时 遇到虚拟内存不足时咋办,帮优化下代码
[size=4][size=5]我编的一个高精度解hilbert方程组的程序段,用的是GS跌代,但运行时出现“虚拟内存不足”的问题,我想是没有及时释放没用的空间,那位高手可以帮我优化一下,谢谢!
#define Max 99
#define Dimension 20
typedef struct node
{
bool sign; //正负
int index; //指数
int data[Max]; //数字
}str;
void precision(str *); //初始化
bool compare(str *,str *);//比较两数大小
str *add(str *,str *); //加
str *sub(str *,str *); //减
str *mul(str *,str *); //乘
str *div(str *,str *); //除
str *conversion(int); //把整数变为str型数据
str *b[Dimension+1], *x[Dimension+1], *k, *t;
k=new str;t=new str;
precision(k);k->data[0]=1;k->index=0;
for(i=0;i<=Dimension;i++){
b[i]=new str;x[i]=new str;
precision(b[i]);precision(x[i]);
}
while(compare(k,div(conversion(1),conversion(10)))){
for(i=1;i<=Dimension;i++){
precision(x[i]);
for(j=1;j<=Dimension;j++){
if(j==i) continue;
x[i]=add(div(x[j],conversion(i+j-1)),x[i]);
}
x[i]=mul(sub(b[i],x[i]),conversion(i+i-1));
}
precision(k);
for(j=1;j<=Dimension;j++){
t=sub(x[j],conversion(1));
k=add(mul(t,t),k);
}
}
[size=4][/size][/size][/size]
[[italic] 本帖最后由 aaabccc 于 2007-12-7 09:51 编辑 [/italic]]