可恶的BSTR和它娘家人们
来源:互联网 发布:按键精灵安卓 数据库 编辑:程序博客网 时间:2024/04/29 20:15
COM中为了实现各语言之间的相互协作,定义几套专用的东西:其中就有BSTR和它的娘家人:sysallocstring,sysfreestring等用于专门处理BSTR的。
然而这几天我在程序中莫名的遇到一些问题:BSTR被无缘无故的释放了。查了很久的原因,最后发现sysallcostring
并没有像MSDN上说的那样工作,发现这样:
上面的代码再跟踪的时候发现一个问题就是,执行完后发现pStr1的地址和pStr2的地址是一样的。MSDN说的是申请一块新的内存存放BSTR。。。
于是我下面的代码就莫名其妙的被释放掉了,代码如下:
在执行到(1)的时候因为是“+=”操作符,pDevObjID会先生成一个_bstr_t的临时变量和wsClauseForLink 相加,在这句执行完后,临时变量就要释放掉了,结果发现把pDevObjID释放掉了(跟踪后发现生成临时变量的时候调用_bstr_t的构造函数时候调用了SysAllocString,结果新生成的临时变量内部的指针和pDevObjID地址一样,所以释放掉了pDevObjID),这样就造成了(2)执行时候,pDevObjID可能已经成为了乱码。
更让人郁闷的是这种问题是间歇性发作了,很难找到问题所在。。。坛里的同志们,你们是否遇到这样的问题呢?
- 可恶的BSTR和它娘家人们
- 可恶的BSTR和它娘家人们---bug解决后发发牢骚
- 可恶的AutoSizeColumnMode和DataError
- char * 和 BSTR的转换
- SilkPerformer和QTP的可恶之处
- 可恶的typedef class和friend
- 今天陪老婆会娘家过年喽!附:初二回娘家的由来和原因。
- 老公和老婆间的暴强通信, 你在娘家还好吗?!~!~~
- 有感于男人们的友谊和女人们的友谊
- 分配和释放 BSTR 的内存
- 分配和释放 BSTR 的内存
- BSTR、char* 和 CString 之间的转换
- 分配和释放 BSTR 的内存
- _variant_t和BSTR的例子 (转)
- CString、BSTR和LPCTSTR之间的区别
- 分配和释放 BSTR 的内存
- BSTR/CComBSTR字符串的结构和用法
- BSTR 的内存分配和释放
- 还不是一样
- JavaScript的位置影响执行效果
- VC绘图
- UITableView 普通静态内容表
- 天龙八部中建筑物行走面
- 可恶的BSTR和它娘家人们
- 计算机专业考研报考注意事项
- ThinkPHP 中的过滤函数
- list.h(链表头文件,原创)---希望大家测试一下,找出bug
- Eclipse 提取MySql中文乱码问题和向mysql数据库插入中文乱码问题
- Hibernate工作流程
- 添加ASP.NET服务--Win7
- PHP获取客户端ip地址
- 全面的framebuffer详解(一)