佚名通过本文主要向大家介绍了sysallocstring,疑问的图片,疑问的动态图片,反义疑问句的回答,疑问的卡通图片等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: SysAllocString的疑问
描述:
ch数组里面是9个数字,为什么ilen ==20?不是18吗?并且最后两个字符在内存里面是cc cc
00144FEC 31 00 32 00 32 00 33 00 1.2.2.3.
00144FF4 32 00 34 00 32 00 33 00 2.4.2.3.
00144FFC 37 00 CC CC
解决方案1:
既然转成char*,就可以用strlen了
描述:
BSTR bstr;
USHORT ch[] = {'1','2','2','3','2','4','2','3','7'};
bstr =SysAllocString(ch);
int ilen = SysStringLen(bstr);
ch数组里面是9个数字,为什么ilen ==20?不是18吗?并且最后两个字符在内存里面是cc cc
00144FEC 31 00 32 00 32 00 33 00 1.2.2.3.
00144FF4 32 00 34 00 32 00 33 00 2.4.2.3.
00144FFC 37 00 CC CC
解决方案1:
你的第一个问题2楼已经回答了。在末尾的位置你没有加0,然后你既没把一个终止符的字符数组传给了BSTR,也没在SysAllocString函数中指定字符串的长度,系统当然就不知道到底有多少个字符需要穿传进去了,这样的结果就不确定了。你加了一个0,系统就知道字符串的长度,或者指定字符串的长度,也就能够初始化BSTR的前缀长度了。
这个给你找的,比较全面,你可以借鉴一下:
http://xjchilli.blog.163.com/blog/static/453477392010512114148975/
既然转成char*,就可以用strlen了