![]() |
【转帖】错在什么地方?
错在什么地方?
错在什么地方? 这是一个objectarxsdk2里的一个例子,我新建一个arx4版的解决方案后,将代码粘帖过来编译、连接正常,但运行命令coordsamp至下面一句 pblock->appendacdbentity(objid, pnewobj); 时,出现错误提示: “acad.exe 中的0x64503f90处未处理异常:0xc0000005: 读取位置0x00000054时发生访问冲突!” 根据经验这都是指针引发的问题,但我不知是哪个指针未作处理、应怎样处理? 程序类声明: class asdkcoordsamp : public acdbentity { public: acrx_declare_members(asdkcoordsamp); asdkcoordsamp(); ~asdkcoordsamp(); virtual adesk::boolean worlddraw(acgiworlddraw *); void viewportdraw(acgiviewportdraw *); acad::errorstatus transformby(const acgematrix3d &); private: adesk::uint32 mnumverts; acgepoint3d *mpverts; }; 复制代码 程序类的实现: asdkcoordsamp::asdkcoordsamp() : mnumverts(4) { mpverts = new acgepoint3d[mnumverts]; mpverts[0] = acgepoint3d(0.0, 0.0, 0.0); mpverts[1] = acgepoint3d(1.0, 0.0, 0.0); mpverts[2] = acgepoint3d(0.0, 1.0, 0.0); mpverts[3] = acgepoint3d(0.0, 0.0, 1.0); } …… 复制代码 命令coordsamp: static void coordsys_coordsamp(void) { // add your code for command coordsys._coordsamp here asdkcoordsamp *pnewobj = new asdkcoordsamp; acdbblocktable *pblocktable=null; acdbhostapplicationservices()->workingdatabase() ->getsymboltable(pblocktable, acdb::kforread); acdbblocktablerecord *pblock=null; pblocktable->getat(acdb_model_space, pblock, acdb::kforwrite); pblocktable->close(); acdbobjectid objid; //运行至下一句引发了异常 pblock->appendacdbentity(objid, pnewobj); pblock->close(); pnewobj->close(); } 复制代码 为什么在vc6.0+objectarx2的指针到visual studio.net2+objectarx4中就不行了呢? [ 本帖最后由 hi_tek 于 8-9-18 04:06 pm 编辑 ] 好象是“acgepoint3d *mpverts;”指针引起的,不知在vc6.0+objectarx2的指针到visual studio.net2+objectarx4中就不行了呢? 不太清楚 |
所有的时间均为北京时间。 现在的时间是 02:07 AM. |