iCAx开思工具箱

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 27422|回复: 19
打印 上一主题 下一主题

CAA 的一个调试错误,请求支援

[复制链接]
跳转到指定楼层
楼主
发表于 2005-9-27 12:09:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我的代码较长,3000多行,算法比较复杂,不能都给出,这里给出错误和相关代码,请高手指点

+=============================================+
! An unhandled exception occurred in CATIA V5 !
+=============================================+

The error is : Allocation failed (11020288 bytes).
An allocation of 11020288 bytes failed.
Close the open documents that are useless, save your work, restart a new session
.


-> Error logged in C:\Documents and Settings\Administrator\Local Settings\Applic
ation Data\DassaultSystemes\CATTemp\error.log

-> Abend file is C:\Documents and Settings\Administrator\Local Settings\Applicat
ion Data\DassaultSystemes\CATTemp\AbendTrace_Administrator_d270_h10m45_0.txt
+===============================================+
+ AN UNRECOVERABLE ERROR HAS OCCURED !!!        +
+-----------------------------------------------+
+ THE ERROR IS                                  +

+                                               +
+===============================================+
+ ABORTING                                      +
+===============================================+

这里为什么会一下需要这么多内存呢,出错的地方已经进行了好几百次循环都没有问题,而且每次循环的内存都释放掉了,在任务管理器的情况是这样的:

物理内存中可用数 还有大概800多MB,内存使用大概有1.5GB多,我机器物理内存有2G,还有虚拟内存几个G,
为什么会有这个错误呢。

出错代码是这样的:
                                                                  
CATLISTP(CATCell) listCellsOfCurves1;
CATBody* tmpJoin3FeatResultBody1=NULL;
CATBody* tmpJoin3FeatResultBody2=NULL;
CATBody* tmpJoin3FeatResultBody3=NULL;
CATBody* tmpJoin3FeatResultBody=NULL;
for(int nbJoin=1;nbJoin<=3;nbJoin++)
{
         CATIGeometricalElement *pGeomEltOnCurFeatJoin3Feat = 0;
         rc = CATBodyListOfJoin[nbJoin]->QueryInterface(IID_CATIGeometricalElement,
                                                                                                        (void**)&pGeomEltOnCurFeatJoin3Feat);            
        CATBody_var Join3FeatResultBody = pGeomEltOnCurFeatJoin3Feat->GetBodyResult();
        CATBody* tmpJoin3FeatpCATBody=0;
        rc=Join3FeatResultBody->QueryInterface(IID_CATBody,(void**)&tmpJoin3FeatpCATBody);
        CATHybIntersect* tmpJoin3FeatHybIntersect=::CATCreateTopIntersect(tmpFactory,itmpData,piTetra,tmpJoin3FeatpCATBody);
       if(tmpJoin3FeatHybIntersect!=NULL)
      {
                                                                                tmpJoin3FeatHybIntersect->Run();
                                                                                std::cout<<"judge number in tmpJoin3FeatHybIntersect  "<<std::endl;
                                                                                tmpJoin3FeatResultBody= tmpJoin3FeatHybIntersect->GetResult( );
                                                                                if(tmpJoin3FeatResultBody!=NULL)  
                                                                                {
                                                                                    if(nbJoin==1)
                                                                                 tmpJoin3FeatResultBody1=tmpJoin3FeatResultBody;
                                                                                if(nbJoin==2)
                                                                                tmpJoin3FeatResultBody2=tmpJoin3FeatResultBody;
                                                                                if(nbJoin==3)
                                                                                tmpJoin3FeatResultBody3=tmpJoin3FeatResultBody;
                                                                                long nbDomain = tmpJoin3FeatResultBody->GetNbDomains();
                                                                                std::cout<<"nbDomain  "<<nbDomain<<std::endl;
                                                                                for(int domainnumber1=1;domainnumber1<=nbDomain;domainnumber1++)
                                                                                {
                     }

后面的代码我就不贴了,主要就是对数据的处理了。

错误是在这里发生的:tmpJoin3FeatResultBody= tmpJoin3FeatHybIntersect->GetResult( );

这段代码外面还有循环,大概要循环5000次吧,每次循环内存都释放的,只有个double被我记录下来。为什么循环大概500次后会有这个错误呢,而且每次错误发生的循环次数不是一样的,也就是说,视我当时机器是否还运行其他程序有关,别的程序占用多少内存有关。不管怎样,为什么会一下子需要那么多内存呢,而且当错误发生时我还有那么多的内存。

各位高手,请指点,我对操作系统之类的知道的不多,满皮毛的,请指教啊,满急的!!!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 支持支持
沙发
发表于 2005-9-27 13:08:30 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
板凳
 楼主| 发表于 2005-9-27 13:39:39 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
地板
发表于 2005-9-27 14:11:59 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
5
发表于 2005-9-27 15:29:01 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
6
发表于 2005-9-27 15:53:20 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
7
发表于 2005-9-27 15:59:08 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
8
 楼主| 发表于 2005-9-27 17:02:02 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
9
 楼主| 发表于 2005-9-27 17:04:05 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
10
 楼主| 发表于 2005-9-27 17:15:11 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手板模型制作,在线3D打印服务

QQ|小黑屋|手机版|开思工具箱 CAD工具箱_CAM工具箱  

GMT+8, 2024-11-16 08:43 , Processed in 0.016495 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表