iCAx开思工具箱

标题: UF_free()可以删除对象吗? [打印本页]

作者: VoyagerBu    时间: 2005-7-7 20:56
标题: UF_free()可以删除对象吗?
我的部分程序:
-----------------------------------------------------------------------------------------
tag_t *ptGeomTags;
UF_MOTION_trace_model(nBaseNums,nTargetLayer,[$nNumTags,&ptGeomTags)]
-----------------------------------------------------------------------------------------
创建出对象后,想要把它们删掉,可是UF_free(ptGeomTags);之后,那些物体还是在屏幕上。后来我用UF_OBJ_delete_array_of_objects(nNumTags,ptGeomTags,[$statuses)]删除了物体。
请教一下UF_free();的用途
Thx~~~
作者: wangmin00y    时间: 2005-7-9 15:43
可以呀
作者: 深夜摔键盘    时间: 2005-7-9 16:52
UF_free不是用来删UG对象的,是用来释放程序中动态分配的内存的,和C语言中的free(void *)函数的作用相同。
作者: VoyagerBu    时间: 2005-7-9 18:24
深夜摔键盘 wrote:
UF_free不是用来删UG对象的,是用来释放程序中动态分配的内存的,和C语言中的free(void *)函数的作用相同。

  
可是动态分配的是UG的对象啊。是不是删除对象一定要用UF_OBJ_delete_object?
谢了~~
作者: 深夜摔键盘    时间: 2005-7-10 08:31
UG的对象封装了许多东西,而且具有关联性,也许你的UG对象是动态分配的,但是一旦与其他对象建立了关联,或者在prt中还存储了一定的记录,UF_free就无能为力了,只能简单的释放掉那点内存。
作者: pzytony    时间: 2005-7-10 20:18
C++语言里面分配空间使用new,释放空间使用delete,
UF_free()类似与delete,
你的明白?
作者: pzytony    时间: 2005-7-10 20:45
??
作者: VoyagerBu    时间: 2005-7-11 10:16
pzytony wrote:
C++语言里面分配空间使用new,释放空间使用delete,  
  UF_free()类似与delete,  
  你的明白?

空间都释放了,为何对象没有删除?
作者: 深夜摔键盘    时间: 2005-7-11 10:58
UF_free还到不了delete的程度,仅是C语言中的free函数。
  
你释放掉的并不是UG的对象空间,只是一些记录对象tag的线性表罢了。
  
即使你释放掉的是UG的对象空间,你也无法用UF_free来消除其他对象中的关联信息。何况,UG根本就没有明显的UG对象来让你UF_free。
作者: leechongqing    时间: 2005-7-11 11:00
软件可以很容易删除,但是还是会留下尾巴的,嘻嘻!一样的道理
作者: supergirl    时间: 2005-7-11 15:21
UG的内存管理是自己写的,所以一般要用UF_free.其实你不free也不会有什么问题,只不过就是比较消耗内存和内存泄漏罢了。
  
delete 和free是两个概念。
  
delete一个东东的时候,远远不是free那么简单,当然我想它应该会free一些内存。tag只是UG中对象的一个标识,你去free了tag的指针,只是把tag指针指向的内存空间free了,并没有告诉UG你要去删除tag所代表的物体。




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3