SymbianOS中的描述符.doc

preview
需积分: 0 6 下载量 81 浏览量 更新于2008-12-26 收藏 28KB DOC 举报
在Symbian操作系统中,描述符(Descriptors)是用于高效管理字符串的重要机制。字符串在Symbian中被称为Descriptor,它们可以存在于RAM或ROM中,因此系统提供了多种类型的字符串类以适应不同的需求和内存管理策略。 对于较短且长度相对固定的字符串,Symbian推荐使用`TBuf<len>`。`TBuf`是一个与Unicode相关的类,具体分为`TBuf16`(用于Unicode编码,如UTF-16)和`TBuf8`(用于单字节编码,如ASCII)。例如,`TBuf<100>`定义了一个最大长度为100的Unicode字符串。使用`TBuf`时,需要注意不能超出预设的长度,否则可能导致程序错误。由于`TBuf`通常分配在内存中较珍贵的部分,所以应避免分配过大的`TBuf`,通常2000个字符以上就不建议使用这种方式。 对于需要在运行时动态决定大小的字符串,可以使用`HBufC`。`HBufC`分配在堆(Heap)上,可以通过`HBufC::NewL(size)`创建一个新的字符串对象,其中`size`是所需的字符数。使用`HBufC`时,需通过`Des()`函数获取其内部的`TDes`实例进行操作。由于`HBufC`是动态分配的对象,因此在使用完毕后必须手动释放,通常使用`delete heapBuf;`进行删除。为了避免内存泄漏,也可以考虑使用Symbian的`CleanupStack`库来管理内存,但具体使用方法需要进一步学习。 此外,`TPtrC`是一个轻量级的类,可以视为指向`TDes`的指针。它常用于简化`HBufC`的`Des()`函数调用,例如,`TPtrC pBuf = heapBuf->Des();`之后,`pBuf`就可以像`TDes`那样处理了。 关于字符串编码,Symbian中的字符串通常是Unicode编码的`TDes16`。在某些情况下,换行可能需要使用特定的字符,例如0x2029,而不是常见的`\n`。在与其他编码(如`TDes8`)交互时,特别需要注意中文字符的处理,确保不会因简单的丢弃高位字节而造成中文数据的丢失。 为了深入理解Symbian中的描述符机制,建议查阅Symbian DevLib的API参考文档,尤其是Descriptors部分,以及SDK帮助文档中的Essential idioms,这些资源将提供更详细的信息和实践指导。理解和熟练使用描述符对于编写高效、稳定的Symbian应用程序至关重要。