当前位置: 代码迷 >> C语言 >> 请问:c或c++运行时 遇到虚拟内存不足时咋办,帮优化下代码
  详细解决方案

请问:c或c++运行时 遇到虚拟内存不足时咋办,帮优化下代码

热度:139   发布时间:2007-12-06 17:29:39.0
请问: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]]
搜索更多相关的解决方案: 内存  代码  虚拟  运行  

----------------解决方案--------------------------------------------------------
LZ竟然改标题!!

[[italic] 本帖最后由 yxwsbobo 于 2007-12-7 11:45 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
maybe your own code's problem
----------------解决方案--------------------------------------------------------
大家帮帮忙啊,谢谢了
----------------解决方案--------------------------------------------------------
hilbert方程组,GS跌代没看懂
所以为什么要new那么多对象,但没有看到对应的heapfree
其它我也不知道,感觉在用FORTORN做计算
----------------解决方案--------------------------------------------------------