明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1919|回复: 15

【求助】两段多段线,求交点后,程序执行到最后一个括号,就报发生冲突

[复制链接]
发表于 2020-2-18 23:02 | 显示全部楼层 |阅读模式
哪位大哥能帮我运行以下这段代码,直接复制上去,一个命令就可以了,我这里老是在程序结束完了,释放 交点的时候 ,就报告说发生冲突,哪位大哥帮帮忙啊,运行一下。

AcDbEntity *ent=NULL;
        AcRxClass *cls=AcDbPolyline::desc();


        ads_name entName;
        ads_point pt;
        AcDbPolyline *pl1=NULL;
        AcDbPolyline *pl2=NULL;
        if(acedEntSel(TEXT("select pl1:\n"),entName,pt)==RTNORM){

            AcDbObjectId entId;

           ErrorStatus es=acdbGetObjectId(entId,entName);

           if(es==ErrorStatus::eOk){

               

               es=acdbOpenObject(pl1,entId,AcDb::kForWrite);

               if(es!=ErrorStatus::eOk){

                   return;
               }
           }
        }
        else{
            return;
        }
        if(acedEntSel(TEXT("select pl2:\n"),entName,pt)==RTNORM){

            AcDbObjectId entId;

            ErrorStatus es=acdbGetObjectId(entId,entName);

            if(es==ErrorStatus::eOk){


                es=acdbOpenObject(pl2,entId,AcDb::kForWrite);

                if(es!=ErrorStatus::eOk){
                    pl1->close();
                    return;
                }
            }
        }
        else{
            pl1->close();
            return;
        }
        AcGePoint3dArray ptArrJ;

        ErrorStatus es= pl1->intersectWith(pl2,AcDb::kOnBothOperands,ptArrJ);

        acutPrintf(L"%d",es);

        if(ptArrJ.length()>=2){

            pl1->close();
            pl2->close();

        }



本帖子中包含更多资源

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

x
发表于 2020-2-19 19:43 | 显示全部楼层
if(ptArrJ.length()>=2){

            pl1->close();
            pl2->close();

        }
不管是否大于等于2都要释放的啊,你这个不是所有操作都有释放
 楼主| 发表于 2020-2-21 23:22 | 显示全部楼层
主要是在使用AcGePointArray或者AcDbVoidPtrArray的时候会出错
这两个是使用的acarray.h里的东西


主要是delete[] mpArray这里就出错。
但是我单独做个写几个点添加进AcGePointArray里,这个Point3dArray释放的时候又不会报错

发表于 2020-2-27 17:04 | 显示全部楼层
出现这个问题不是太正常了,你的vs2010用的库是一个版本,对应的cad2013-14,cad2012开发库用的是另一个版本,应该用vs2008来编译。你这个就是用一个库的new,另一个库的delete,当然会出问题。vs和cad匹配就可以了
 楼主| 发表于 2020-2-18 23:07 | 显示全部楼层
我怀疑是这个AcGePoint3dArray 最后释放点的时候会出错,我都不知道该怎么办才好了。

本帖子中包含更多资源

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

x
 楼主| 发表于 2020-2-19 13:48 | 显示全部楼层
我用vs2010+cad2012 在 win10 64位的电脑上就这样,但是我用vs2015+cad2018,同样的代码一点错误都没得,我该怎么办?
发表于 2020-2-19 19:52 | 显示全部楼层
WIN10 64位 CAD2016 未报错。

点评

这个satan421就一个倒卖明经上插件的杂碎,大家留心点。  发表于 2020-5-26 21:15
 楼主| 发表于 2020-2-19 21:10 | 显示全部楼层
satan421 发表于 2020-2-19 19:52
WIN10 64位 CAD2016 未报错。

我在我旧电脑上cad2018+vs2015开发的,win10 64位也没报错。真是太奇怪了。
发表于 2020-2-20 22:23 | 显示全部楼层
WIN7X64+VS2010+CAD2016测试无问题。
 楼主| 发表于 2020-2-21 10:42 | 显示全部楼层
谁能用vs2010+cad2012测试一下呢?
 楼主| 发表于 2020-2-21 23:03 | 显示全部楼层
革天明 发表于 2020-2-19 19:43
if(ptArrJ.length()>=2){

            pl1->close();

你说的对,我改了代码了,也是同样的问题。
 楼主| 发表于 2020-2-21 23:04 | 显示全部楼层
最新发现,我这个有很少的情况,代码不报这个错误,能正常执行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-6 12:06 , Processed in 0.466984 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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