今天在写程序时,用到了动态缓冲CBufFlat,在读取数据后想当然的使用了TDes8的Expand()方法将TDes8改为TDes16,当然程序报错了,模拟器直接退出,很显然程序发生严重错误。通过实践后发现Expand并非通过扩展内存区域来实现8bit转16bit,而是使用现有的描述符内存区域大小,只是进行了内存合并,两个8成了一个16,如果8位描述符中信息已经超出了最大长度一半,则会转换失败。Expand方法在使用时还可能因为内存地址非偶数地址而发生转换失败。
随笔记录,以防再错。也请大家指点。
本文记录了一次使用动态缓冲CBufFlat时遇到的问题:尝试将TDes8转换为TDes16时程序崩溃。作者分享了错误原因及解决办法,包括Expand()方法的正确使用方式和限制条件。

被折叠的 条评论
为什么被折叠?



