1. 程式人生 > >dmalloc 原文 翻譯整理(3)

dmalloc 原文 翻譯整理(3)

L164 實現不是完全模組化和過度使用巨集。也許有朝一日所有的C編譯器現在不能作的蠻力擴充套件嵌入模組碼能做到,但是現在他們似乎是不足的。

 The implementation is not very modular and seriously overuses macros. Perhaps someday all C compilers will do as good a job inlining modular code as can now be done by brute-force expansion, but now, enough of them seem not to.

一些編譯器傳送許多的警告,關於程式碼死掉/不能找到僅僅在一些平臺上,並且也關於一些故意不用的無符號型別。所有一隻能被忽略的原因。

Some compilers issue a lot of warnings about code that is dead/unreachable only on some platforms, and also about intentional uses of negation on unsigned types. All known cases of each can be ignored.

L178 MSSPACES

如果定義了MSSPACES,然後加入malloc,free,等.中,這個檔案也定義 mspace_malloc, mspace_free,等。這些是常規版本malloc採取"mspace"引數獲得引用create_mspace,去控制所有的內部記錄。如果 ONLY_MSPACES被定義,僅這些版本被編譯。這樣如果你想使用這個記憶體分配器為僅僅一些記憶體分配並且你的系統malloc作其他的,你可以僅編譯ONLY_MSPACES並然後做一些事情像...

   static mspace myspace = create_mspace(0,0);//例子

   #define mymalloc(bytes)  mspace_malloc(mymspace, bytes)

* MSPACES
  If MSPACES is defined, then in addition to malloc, free, etc., this file also defines mspace_malloc, mspace_free, etc. These are versions of malloc routines that take an "mspace" argument obtained using create_mspace, to control all internal bookkeeping. If ONLY_MSPACES is defined, only these versions are compiled. So if you would like to use this allocator for only some allocations, and your system malloc for others, you can compile with ONLY_MSPACES and then do something like...
    static mspace mymspace = create_mspace(0,0); // for example
    #define mymalloc(bytes)  mspace_malloc(mymspace, bytes)

L189 註解:如果你僅需一個mspace例項,你可以替換用USE_DL_PREFIX去重注全域性malloc

你同樣能建立執行緒區域性記憶體分配儲存mspaces像區域性執行緒。例如:

     static __thread mspace tlms = 0;

     void* tlmalloc(size_t bytes)

     {

          if(tlms == 0) tlms = create_mspace(0,0);

          return mspace_malloc(tlms, bytes); 

     }

     void tlfree(void* mem) { mspace_free(tlms,mem);}

除非 FOOTERS是定義的,每一個mspace是獨立完成的,你不能從一個自由分配到另一個(儘管一致性檢查是弱的,錯誤的用法不總是被捕獲)。如果FOOTERS被定義,每一個塊攜帶著一個標籤標明它源於mspace,並且釋放指向它的源spaces。

  (Note: If you only need one instance of an mspace, you can instead use "USE_DL_PREFIX" to relabel the global malloc.)

  You can similarly create thread-local allocators by storing mspaces as thread-locals. For example:
    static __thread mspace tlms = 0;
    void*  tlmalloc(size_t bytes) {
      if (tlms == 0) tlms = create_mspace(0, 0);
      return mspace_malloc(tlms, bytes);
    }
    void  tlfree(void* mem) { mspace_free(tlms, mem); }

  Unless FOOTERS is defined, each mspace is completely independent. You cannot allocate from one and free to another (although conformance is only weakly checked, so usage errors are not always caught). If FOOTERS is defined, then each chunk carries around a tag indicating its originating mspace, and frees are directed to their originating spaces.

L208--------------------------------編譯選項-----------------------------------------------------

謹慎建立size_t型別數學常量值的定義。一些系統,預設的值不是自動適應size_t精度除非他們明確的定義,你也能使用符號值MAX_SIZE_T,SIZE_T_ONE,等如下。

WIN32                       預設:定義如果 _WIN32定義

定義WIN32建立預設為MS環境並編譯器。另外預設為unix。注意的是,似乎有一些malloc的情況下,這可能不是一個純粹的簡易替換為WIN32的malloc:隨機檢視失敗從Win32 GDI API的原由也許是在一些視訊驅動執行當畫素快取被分配,並且虛擬快取溢位的BUG。因為 dlmalloc使用一個小的預設粒度為64k的,畫素快取可能經常跨虛擬快取範圍分配當用微軟的記憶體分配器時。你能解決這個使用VirtualAlloc()和VirtualFree()為所有的畫素快取寧可用malloc()。如果這是不可能的,重新編譯這個malloc帶著一個大的DEFAULT_GRANULARITY。


 -------------------------  Compile-time options ---------------------------

Be careful in setting #define values for numerical constants of typesize_t. On some systems, literal values are not automatically extended to size_t precision unless they are explicitly casted. You can also use the symbolic values MAX_SIZE_T, SIZE_T_ONE, etc below.

WIN32                    default: defined if _WIN32 defined
  Defining WIN32 sets up defaults for MS environment and compilers.  Otherwise defaults are for unix. Beware that there seem to be some cases where this malloc might not be a pure drop-in replacement for Win32 malloc:Random-looking failures from Win32 GDI API's (eg; SetDIBits()) may be due to bugs in some video driver implementations when pixel buffers are malloc()ed, and the region spans more than one VirtualAlloc()ed region. Because dlmalloc uses a small (64Kb)
  default granularity, pixel buffers may straddle virtual allocation regions more often than when using the Microsoft allocator.  You can avoid this by using VirtualAlloc() and VirtualFree() for all pixel buffers rather than using malloc().  If this is not possible, recompile this malloc with a larger DEFAULT_GRANULARITY.

相關推薦

dmalloc 原文 翻譯整理3

L164 實現不是完全模組化和過度使用巨集。也許有朝一日所有的C編譯器現在不能作的蠻力擴充套件嵌入模組碼能做到,但是現在他們似乎是不足的。  The implementation is not very modular and seriously overuses macr

實習期間的一些思考整理32018.4.12~4.13

com alt 榮耀 8.4 基本 戰鬥機 那種 spa 失去 青雲訣遊戲體驗日報-2018.4.12 今日關鍵點:核心玩法 青雲訣的核心玩法是“戰鬥”、“成長”、“探索”(這三點也是RPG類型的要素),側重於成長。 我是這樣想的,要想找出核心玩法是什麽,就要看哪些玩法沒了

自然場景文字處理論文整理3Mask TextSpotter

這篇論文是2018年7月6號出來的,對於任意形狀的自然文字檢測識別效果非常好。 paper:https://arxiv.org/abs/1807.02242 目前無相關原始碼 1.摘要簡介 在本文中,我們提出了一個名為Mask TextSpotter的文字監視器,它可以檢測和

jQuery學習整理--3jQueryHTML

1.jQuery - 獲取內容和屬性 jQuery DOM 操作 DOM = Document Object Model(文件物件模型) DOM 定義訪問 HTML 和 XML 文件的標準: “W3C 文件物件模型獨立於平臺和語言的介面,允許程式和指令碼動態訪問和更新文件

Docker入門基礎學習整理3

Docker常用操作 Docker在只讀層上新增一個可寫層, registry用於儲存映象 一個映象可以有多個Tag,一個Tag只能有一個映象 6種名稱空間:UTS.User,mount,IPC,Pid,Net 使用docker build建立映象 格式 dockersbu

【JAVA面試】java面試題整理3

                                     java面試題整理(3) JAVA常考點3 目錄 1. 講下JAVA的執行時區域 回答:執行時資料區整體分為兩類 執行緒私有和執行

Android學習筆記整理3--Android開發環境搭建

1、安裝jre,配置環境變數在執行輸入cmd開啟Doc輸入java看電腦是否有java執行環境jre 上圖顯示沒有代表這時我們需要裝jre,配置環境變數  安裝完成之後,配置環境變數,滑鼠右擊我的電腦選

java面試題整理3

1.String為什麼是不可變的?        原文地址在這裡! 2.Tomcat,Jetty,Apache,Jboss,Nginx的區別: 原文地址在這裡 tomcat與Jetty:

影象基本知識整理3——影象的正交變換

//小波基 const double hCoef[10][20] = {     { .707106781187,  .707106781187},     { .482962913145,  .836516303738,  .224143868042, -.129409522551 },     { .33

針對《面試心得與總結—BAT、網易、蘑菇街》一文中出現的技術問題的收集與整理3

JVM 1. 記憶體模型以及分割槽,需要詳細到每個區放什麼 JVM記憶體區域模型 1.方法區 也稱”永久代” 、“非堆”,  它用於儲存虛擬機器載入的類資訊、常量、靜態變數、是各個執行緒共享的記憶體區域。預設最小值為16MB,最大值為64MB,可以通過-X

JS知識整理隨筆3數組

.... nat 一個 .so 項目 stat 分享 它的 處的 創建數組 使用Array構造函數 語法:new Array() 小括號說明 預先知道數組要保存的項目數量 向Array構造函數中傳遞數組應包含的項 使用數組字面量表示法 由一對包含數組項的方括號[]表示,

Coursera 深度學習 吳恩達 deep learning.ai 筆記整理3-2——機器學習策略

新的 bsp 誤差 spa 歸納 空間 font 處理 整理 一、誤差分析 定義:有時我們希望算法能夠勝任人類能做的任務,但是當算法還沒達到人類所預期的性能時,人工檢查算法錯誤會讓你知道接下來做什麽,這也就是誤差分析 檢查,發現會把夠狗當恒,是否需要做一個項目專門處理狗

2018版OCP 11g 052最新考試題庫整理帶答案3

註冊 ble 考試 rar data 試題 rman pac tip 3、Which structure can span multiple data files? A) a permanent tablespace B) a bigfile tablespace C) a

簡單NLP分析套路3---- 視覺化展現與語料收集整理

文章大綱 視覺化 詞雲 wordCloud 主題模型 行業語料庫 保險行業語料庫 醫學健康類語料庫 構思這個系列的初衷是很明顯的,之前我是從圖論起家搞

MIT6.S094深度學習與無人駕駛整理筆記3——————深度強化學習與運動規劃

1.一個神經元類似一個與非門,神經元電路與與非閘電路相比,可以執行與非門的操作,且還能學習由與非閘電路表示的任意的邏輯功能,並不需要人類工程師對其干涉,並還能進一步對其優化。 缺點:輸出不是很平滑不能用階躍函式,機器學習的過程一般是逐漸調整這些權值的過程,看他如何影響神經網

直播疑難雜癥排查3— 首開慢

播放器 問題 直播 排查 首開 本文是 《直播疑難雜癥排查》系列的第三篇文章,我們來看看直播過程中,最重要的一個性能指標:首開。1. 首開慢的表現點擊播放後,需要好幾秒才能顯示播放畫面。2. 常見首開慢問題排查2.1 點擊播放後才從服務器取播放地址播放視頻,第一件事就是要拿到播放地址,大多

Django 應用開發3

images alt doc include 新的 logs end esp eat 1.編寫第一個視圖 打開polls/view.py 利用一個URLconf將這個視圖映射到URL上。 首先先創建一個urls.py文件 編寫polls/urls.py 編寫m

(三)XML基礎3

ack cdata mage void 元素節點 images 包含 exce -1 五、XPath:快速定位到節點   5.1  簡介   5.2  語法   5.3  案例 XPath對有命名空間的xml文件和沒有命名空間的xml定位節點的方法是

Pro Android學習筆記一三七:Home Screen Widgets3:配置Activity

map onclick widgets info xtra ces extends height appwidget 文章轉載僅僅能用於非商業性質,且不能帶有虛擬貨幣、積分、註冊等附加條件。轉載須註明出處http://blog.csdn.net/flowingfly

關於量子計算機 3

工作 取代 十年 有監督 order 嘗試 數學運算 算法 如何 本文翻譯自D-Wave公司網站 www.dwavesys.com/en/dev-tutorial-intro.html D-wave公司在2007年就聲稱實現了128位的量子計算機,並會在今年推出512位的量