我用VC作了一个ocx,VB来调用, 在vc中,用AllocSysString返回一个BSTR给VB用,请问我如何去Free这个BSTR?
解决方案 »
- 修改OCX的敏感问题
- 我写了个CWinApp的派生类,想把他封装到dll中,应该创建什么样的dll?
- CFormView中的变量如何传递给新建立的模式对话框中的变量。
- 请问在VC中Common Dialog Control怎么用
- 定时器问题我知道答案了,不知道为什么,请大家讨论一下,很奇怪。
- 关于使窗体透明的问题2(特别是 islong(有些事情不能忘记)来看一下)
- 在一个应用程序中如何启动另一个程序(不一定是可执行文件)?
- 问个菜问题
- 如何使用VC编写非局部均值算法
- 如何设置安装时的背景图片,在InstallShield 5.1中。
- 在工作者线程中可以使用_RecordsetPtr吗?
- 急啊!
这个说法也有人提过,但这个内存是我在VC分配的,vb怎只我分了多大??
还有,如果vb中自动释放,那我用vc调用这个OCX时,不就会有内存泄漏吗??
VC中用SysFreeString释放;
谢谢你的回答,那就是说,我在ocx中要做一个Interface,用SysFreeString去释放这个内存,是这样的吗??
可这个AllocSysString的Interface要重复调用。。??:(还有,我用BSTR bStore = str.AllocSysString(), 然后把这个指针返给VB,再用
SysFreeString(bStore), 这样能行吗??
你的意思是不是不用作函数呀??
string s = OCX.GetString(); // 你的OCX此时会SysAllocString;
s退出有效范围时,VB会自动调用SysFreeString;VC:
BSTR s;
OCX.GetString(&s); // 你的OCX此时会SysAllocString;
用完后;
SysFreeString(s);
VC中的那个SysFreeString(s); 是不是再调用中做得呀??
可是如果我在OCX中用 BSTR s = new WCHAR[1024];
外面也这么释放吗???
2.最好不要这样做:如果想在OCX中保留其值也有很多方法,用BSTR类型最好使用SysAllocString;
嗯,我是用成员指针来保存的,这样有用是吧?? 呵呵:)
如果再VB中调用,即使重复调用,是不是也不用作Interface函数呀???
谢谢大家我去给大家加分了,大家都有,呵呵:)