Symbian作業系統結構之二:可寫待用資料

來源:互聯網
上載者:User

*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";

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.