Rss & SiteMap

曙海教育集团论坛 http://www.bjzhda.cn

曙海教育集团论坛
共1 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:文本数据及二进制数据的描述符介绍

1楼
wangxinxin 发表于:2010-12-3 14:07:05

文本数据及二进制数据的描述符介绍


Symbian OS: 文本数据及二进制数据的描述符介绍| 5
1. 简介
描述符(Descriptors )是Symbian OS 的基本组成部分,它提供了对字符串进行操作的一些
规则,同时也用作二进制数据的容器(containers )。描述符在许多函数原型中使用,因
此,理解如何有效地使用描述符是非常重要的。
本文讨论了各种描述符,范围从基本知识到高级功能。读者至少应该熟悉一些基本的
Symbian OS 概念;可以参阅《Symbian 开发伙伴库》[SYM70]中的《基本编程规范》一
节。
第二章帮助读者理解使用传统C 字符串和Symbian 描述符时遇到的一些内存问题。第三章
通过类型的层次结构、各类型的特点、字符串操作方法、字符转换,以及一些调试问题等对
各种描述符进行了简要解释。第四章给出了一些与描述符有关的APIs。第五章讲述了如何用
描述符替换各种C 字符串,以便让熟悉C 语言的程序员们能快速找到相应的规则。
版本1.0 | 2004 年5 月28 日

Symbian OS: 文本数据及二进制数据的描述符介绍| 6
2. 变量声明与内存
在本章中,程序员们可以了解到字符串声明与内存的关系(此信息一般也适用于变量声
明)。各种资源受限的手持设备其内存问题和资源管理问题至关重要。理解Symbian OS 编
程的一些基本原则对于设计出具有良好性能的软件及其重要。
2.1 节讲述了逻辑内存区。2.2 节讨论了C 字符串声明的修正,其目的是将读者引导到
Symbian 字符串声明及其与内存之间的关系等课题。
许多有关内存的问题可参阅《针对移动电话的Symbian OS C++ 》[SOSC]一书。还可参阅
《Symbian 开发伙伴库》[SYM70]一文;读者可以阅读有关进程、线程,以及内存管理等方
面的课题。
2.1 变量与内存
声明变量时,会在内存中的某个地方保留其内部数据机构。根据这种声明的具体情况,数据
被储存到下列内存类型之一:
. 二进制程序。编译器对各个源程序进行编译,而连接器将他们连接起来。其结果
就被称为二进制程序。当声明静态变量和常变量时,其数据被包括在变量中并成
为二进制程序的一部分。必须在程序代码中对这类变量进行初始化。因为它们都
是常量,在程序运行过程中并不能改动这些数据,所以也将它们作为该二进制程
序的一部分传递。
既可以直接从ROM 运行程序,也可以将其加载到只读RAM 中,并从那里运
行。这两种内存中的变量都受到保护,不会被某些不适当的代码所修改。这就是
诸如文字这类常量静态数据被储存在二进制程序中的原因。
为二进制程序所声明的变量都存在于该程序的整个生命周期之中。它们不需要程
序员进行任何内存管理;当程序结束时,为该二进制程序所分配的RAM 被操作
系统所释放。而如果是ROM,就不必为二进制程序作任何事情。
. 全局数据。如果某个变量被声明成静态的,但并不是常量,它就被认为是全局数
据。在Symbian OS 中,只有可执行的.exe 才具有全局数据。如果为.dll 声
明了全局数据,那么当针对ARM 平台编译时,编译过程就会报错停止。
当.exe 被作为一个进程而启动并具有全局数据时,会为全局数据保留一个自己
的内存区域。由于使用全局数据通常并非好设计,而且由于许多应用都是.dll
可执行程序,对全局数据的使用不在本文中讲解。
. 栈。Symbian OS 中的每个线程都有其自己的栈。自动化变量被分配到该栈中。
当调用某个方法时,其参数也被分配到这个栈中。因为栈尺寸很有限(对于
Symbian OS 更是如此),只有一小部分的数据可以被分配到这个栈中。在函数
调用中,必须使用对象的指针或引用,以降低将这些对象副本分配到栈中的需
求。
由于规定了栈中变量的生命周期,所以当该程序块结束时,该程序块中全部已被
声明的自动化变量都会被自动删除。如果该变量是一个类,它有一个析构函数,
那么在将该对象移出栈之前就会先调用这个析构函数。
. 堆。Symbian OS 中的每个线程都有一个堆。这是一个内存区域,其中放置所有
被动态分配的对象。用对象C++ 的关键字new 将各个对象分配到这个堆中

共1 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2009 曙海教育集团
Powered By 曙海教育集团 Version 2.2
Processed in .01367 s, 2 queries.