几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(C++) (http://www.dimcax.com/hust/forumdisplay.php?f=34)
-   -   【转帖】大侠帮我:arx程序运行几次再运行就说内存错误,求解决办法 (http://www.dimcax.com/hust/showthread.php?t=7296)

yang686526 2009-04-16 10:21 PM

【转帖】大侠帮我:arx程序运行几次再运行就说内存错误,求解决办法
 
大侠帮我:arx程序运行几次再运行就说内存错误,求解决办法
大侠帮我:arx程序运行几次再运行就说内存错误,求解决办法
我是新手,不熟悉arx,遇到一个问题,求帮助.
问题是这样的,我编了段程序,运行3-5次之后,程序就出错,
此主题相关图片如下:
问题肯定出在内存管理上,但我不知到底身什么错误,求哪位指点一下.
回复
有源程序才可以看啊.
change your life style.
arx内存不释放的情况下连续运行造成的再进入数据位置错误。你每运行一次arx程序,里面的数据就占用一块内存,autocad调入给每一个arx程序的内存有限,如果arx不释放自己的数据,每次运行都是重新分配,最终会造成内存冲突。
比较简单的解决方法是每运行完一次arx就自动卸载,下一次运行自动加载,保证自动释放/重新分配内存。
virtue is like a rich stone, best plain set.
-- francis bacon, <of beauty>
那是内存越界了。
3楼的说法是错误的。
即使有内存没释放,也只是占用尽可能多的内存,不会出错。
“每运行完一次arx就自动卸载...”的说法也是不对的,真正内存清除是在进程退出后操作系统作清理。
4楼斑竹应该试过arx使用global data重复运行的情况,不卸载的话,每次重复运行都继续使用上次运行的结果,如果卸载再加载,这些数据会被重新初始化。我说的卸载不是单说卸载这个动作本身,还包括卸载中的清理命令。
每次arx运行使用的内存不一定是同一物理区域,我并没有说卸载等于清除使用过的内存内容;内存错误的原因也可以是程序内部其他地方没有考虑的内存管理问题,但我相信您也一定用system monitor看过arx卸载和不卸载连续运行时autocad进程的内存使用情况了。卸载只是一个简单一锅端的方法。
virtue is like a rich stone, best plain set.
-- francis bacon, <of beauty>
全局变量的初始化确实如您所说,但是解决不了楼主内存越界的问题
我的确急躁了一些,越界的问题出在哪里是看代码。但用强迫卸载的确解决过类似的重复运行报错。
也有可能是debug/release版本问题。
virtue is like a rich stone, best plain set.
-- francis bacon, <of beauty>


所有的时间均为北京时间。 现在的时间是 03:16 PM.