iCAx开思网

标题: 谁能发一个uf_free()的VB示例 [打印本页]

作者: zhangcanwei    时间: 2009-9-3 18:16
标题: 谁能发一个uf_free()的VB示例
我看了帮助以及ug自带的示例,都是c++代码,我改为VB代码后,uf_free()就会出错,因为这个函数需要指针类型输入参数。在VB中数组变量名应该就是指针。但是会出错。
作者: zhangcanwei    时间: 2010-9-28 08:35
比如这个函数中,如何使用UF_Free()
作者: zjs    时间: 2010-9-28 11:29
UF_Free()  的功能我认为是为了释放内存空间,就向c++ 的delete功能,如果不用 UF_Free()  ,你可以用delete 试一下。

有点不明白,为什么你需要在VB内调用c++程序。 个人认为,无论从什么角度都没有好处啊!
作者: zhangcanwei    时间: 2010-9-28 13:50
delete是删除object,uf_free是释放存储这些object信息所占用的内存。两者不一样。
我实在用VB编程,因为没有这方面的资料,就参考c++的资料。
作者: chinalgw    时间: 2010-9-28 15:32
VB不需要Free内存,对于OO来说,delete就是删除对象及其消耗的系统开销。对于C++来说,底层的内存管理都放在对象的析构函数中,原则上内置类型的数据的都要用new, delete便于管理。

至于Free,C风格的。
作者: zjs    时间: 2010-9-28 20:51
我说的delete 不是你说的意思。这个是与new 配对的。UG的函数也是用c 开发的,因为调用时用的是指针,不知道它的大小,所有程序调用后需要uf_free将程序分配的内存释放。 功能上与delete 完全一样。
作者: zhangcanwei    时间: 2010-9-29 07:20
多谢二位,我先不用uf_free(),然后再用delete分别试一下,最近这几天工作有点忙,等几天把结果放上来。
作者: chinalgw    时间: 2010-9-29 11:06
7# zhangcanwei

用Journal来录制,不要直接改VB的。录制支持VB.net。我不理解你说的,原则上VB不需要管理内存。

另外就算你用c, UF_free只用于free UF_alloc或者nx内部allocate的内存,不应该用于你自己malloc或者new的任何内存,因为nx malloc内存的pending mark flag和系统默认的是不一样的。

如果你界面要用VB,建议你用VB调用C dll,还是用C写你的Nx相关代码。最好的是去journal

本帖最后由 chinalgw 于 2010-9-29 11:10 编辑
作者: zhangcanwei    时间: 2010-9-30 13:48
Journal录制现在还不支持所有的代码,我看了,到NX7.5为止,所有需要free()的函数均不支持录制,真是头痛。不过用c来写这部分代码,然后调用dll也是个办法。
另外,我试了,如果不用uf_free(),那么,一个api函数调用几次就会出错。现在的解决办法是把这部分代码用grip来解决,效率很低。我再试试C怎么样,当初放弃C就是因为用起来繁琐,毕竟不是专业开发人员。现在还得把他拾起来。
   多谢各位支持!自己一开始对UG二次开发一无所知,是机械工程师,搞开发半路出身,还是利用业余时间,这么多年过来了。从TC2.0到VC4.0到VB6到VB.net,有苦更有乐!多亏了高手网友的无私协助。
作者: zhangcanwei    时间: 2010-10-1 08:38
今天又试了一个CreateSimplifiedCurve()函数,处理了几万条曲线,没有使用uf_free(),发现没有问题。
又特别试了AskSplineThruPts()函数,最后两个参数也没有使用uf_free(),处理了几百条曲线,内存也没有报错。看来以前出现的内存错误不是这个问题造成的。由于误解,我长时间都没有使用过有Uf_free()要求的函数,都是用grip来替代。
  感谢两位高手啊!!




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3