Symbian操作系统结构之二:可写静态数据
2009-07-14 11:06
344 查看
*Symbian操作系统支持EXE中的全局可写静态数据
*在采用EKA1的Symbian操作系统(8.1a,8.0a以及以前版本)中,可写静态数据不能用于DLL中
- DLL具有单独的区域用于存放程序代码和只读数据,没有用于可写数据的区域
*采用EKA2的Symbian操作系统支持在DLL中使用可写静态数据,但是并不是推荐这样做
- 内存使用开销巨大
- Symbian操作系统模拟器支持性不佳
*替代可写静态数据的方法
- 线程本地存储(简称TLS)
·在Symbian8.1b之前使用DLL类,在Symbian8.1b和9.0使用UserSvr类
·线程本地存储是一个32位指针,用来引用模拟全局可写静态数据对象
·所有的全局数据组成一个对象,在线程创建时在堆一分配
- 客户端-服务器框架
·Symbian操作系统支持在EXE中使用可写静态变量,因此可以在服务器端(本身就是EXE)实现可写静态数据
- 在类中嵌入全局变量
·可以将全局变量放在类中,将类作为参数在对象和函数间传递
*可写静态数据定义
- 全局可写静态数据是每个进程都可以修改的变量,它在进程的生命周期内存在
- 唯一可以在DLL中使用的全局数据是内置类型,或没有构造函数的类的全局常量,比如
static const TUid KUidFooDll = {oxF000C001};
static const TInt KMinimumPasswordLength = 6;
- 以下的定义不可用,因为它们要求实时地构造对象
static const TPoint KGlobalStartingPoint(100,100);
static const TChar KExclamation('!');
static const TPtrC KDefaultInput = _L("");
- 不能使用非常量的全局数据,比如
static const TText* ptr = (const TText*)"data";
- 应该修改为
static const TText* const ptr = (const TText*)"data";
*在采用EKA1的Symbian操作系统(8.1a,8.0a以及以前版本)中,可写静态数据不能用于DLL中
- DLL具有单独的区域用于存放程序代码和只读数据,没有用于可写数据的区域
*采用EKA2的Symbian操作系统支持在DLL中使用可写静态数据,但是并不是推荐这样做
- 内存使用开销巨大
- Symbian操作系统模拟器支持性不佳
*替代可写静态数据的方法
- 线程本地存储(简称TLS)
·在Symbian8.1b之前使用DLL类,在Symbian8.1b和9.0使用UserSvr类
·线程本地存储是一个32位指针,用来引用模拟全局可写静态数据对象
·所有的全局数据组成一个对象,在线程创建时在堆一分配
- 客户端-服务器框架
·Symbian操作系统支持在EXE中使用可写静态变量,因此可以在服务器端(本身就是EXE)实现可写静态数据
- 在类中嵌入全局变量
·可以将全局变量放在类中,将类作为参数在对象和函数间传递
*可写静态数据定义
- 全局可写静态数据是每个进程都可以修改的变量,它在进程的生命周期内存在
- 唯一可以在DLL中使用的全局数据是内置类型,或没有构造函数的类的全局常量,比如
static const TUid KUidFooDll = {oxF000C001};
static const TInt KMinimumPasswordLength = 6;
- 以下的定义不可用,因为它们要求实时地构造对象
static const TPoint KGlobalStartingPoint(100,100);
static const TChar KExclamation('!');
static const TPtrC KDefaultInput = _L("");
- 不能使用非常量的全局数据,比如
static const TText* ptr = (const TText*)"data";
- 应该修改为
static const TText* const ptr = (const TText*)"data";
相关文章推荐
- 操作系统,数据结构,算法 这3个一定要用心学好
- 数据结构之线性表4单链表(静态单链表)
- C++存储数据结构之二CArray
- 【数据结构与算法】内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 数据结构(8)线性表之静态链表
- 数据结构——查找(1)——静态查找、动态查找
- 数据结构与算法之二 排序
- 数据结构基础之静态顺序表
- SPI子系统分析之二:数据结构
- mysql索引之二:数据结构及算法原理
- 【数据结构作业】实现任意三种静态或动态查找
- 数据层次结构建模之二
- 数据结构基础(C++版)(张力译版)校正 之二 .
- 【数据结构作业】实现任意三种静态或动态查找
- [李景山php] 深入理解PHP内核[读书笔记]--第三章:变量及数据类型--变量的结构和类型--静态变量
- Symbian DLL中可写静态数据问题 (二)DLL中实现单例模式
- 数据结构基础(5)--C语言实现循环队列--静态
- 数据结构之静态队列的java简单实现
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- 数据结构与算法之二冒泡排序