Symbian开发入门
2010-06-03 23:07:00 来源:WEB开发网_LIT(KPalindrome, "Do Geese see God?");
TBufC<20> stackBuf(KPalindrome);
// Allocates an empty heap descriptor of max length 20
HBufC* heapBuf = HBufC::NewLC(20);
TInt length = heapBuf->Length();// Current length = 0
TPtr ptr(heapBuf->Des()); // Modification of the heap descriptor
ptr = stackBuf; // Copies stackBuf contents into heapBuf
length = heapBuf->Length(); // length = 17
HBufC* heapBuf2 = stackBuf.AllocLC(); // From stack buffer
length = heapBuf2->Length(); // length = 17
_LIT(KPalindrome2, "Palindrome");
*heapBuf2 = KPalindrome2; // Copy and replace data in heapBuf2
length = heapBuf2->Length(); // length = 10
CleanupStack::PopAndDestroy(2, heapBuf);
记住,堆描述符可以按您的要求的尺寸动态分配内存,但它不会自动按您的期望更改缓冲区的大小。在修改缓存区 的内容之前,您要确保缓存区的内存是足够的。为了帮您简化这些操作,HBufC提供的一套ReAllocL()方法,它可以用来扩展堆的缓存区(这个操作有可能会使缓冲区从一个内存区域搬到另一个区域)。
如果您在HBufC上调用Des()方法来获取了TPtr, 在经过重新分配内存后,TPtr中的成员变量iPtr有可能变成无效的。因此,为了确保安全,在重新分配内存后,应该再次调用Des()来创建一个新的TPtr对象。
注:出于性能上的考虑,Symbian系统并没有提供可修改的堆描述符HBuf。
总结:Symbian系统中总共有5种类型的描述符,TPtrC,PTtr,TBufC,TBuf和HBufC。下面的图示表明了它们的继承关系。
3.7字面量描述符(Literal Descriptors)
下面我们来看看字面量描述符,它相当于C语言中的static char[]。字面量描述符是通过一系列的宏来创建的,这些宏可在头文件e32def.H中找到
#define _L8(a) (TPtrC8((const TText8 *)(a)))
- ››Symbian S60 SocketConnection参数
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››Symbian乏力:2010年诺基亚悲情大事记
- ››Symbian三大升级开启2011年新战略
- ››Symbian/Android/iOS/WM安装包对比
- ››Symbian一个活动对象的测试例子
- ››Symbian ListBox控件
- ››Symbian下自动切换SDK的批处理代码
- ››Symbian 3 版的 Swype 输入法正式上架
- ››Symbian中的设计模式
- ››Symbian S60平台JAVA开发环境搭建步骤
- ››Symbian自定义控件—如何实现跑马灯效果
更多精彩
赞助商链接