• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統計

            最新評論

            dll靜態編譯的問題 ---- 轉

            當選擇multi-threaded或者multi-threaded debug靜態編譯時,請注意,編譯器會為該dll單獨實現一個c++ 運行庫環境。這時,exe文件或者其他dll文件也使用靜態編譯等的時候,編譯器又會實現多個c++運行庫環境。在這個時侯,(由于微軟的stl實現基于引用計數,)多個運行庫的存在,就可能導致引用計數的錯誤(因為各個運行庫分別計數)。

            直接導致的問題就是,如果dll導出函數輸入或者輸出數據類型中使用了stl類時,程序有可能因為引用計數的問題而過早析構該對象,而導致后續訪問野指針,應用程序崩潰。

            所以當你選擇靜態編譯的時候,記住返回的函數或者輸入的參數,都不要使用stl類對象,否則程序將不穩定。

            C++代碼
            1. // 以std::string為示例,如下風格的函數不可用   
            2. std::string getString(); // 返回一個std::string或者std::string&   
            3.   
            4. void getString( std::string&);  //輸入參數是std::string&等   
            5.   
            6. void setString( const std::string&); //同樣會導致不可預料的錯誤,雖然輸入的值是const類型的!  

             其他stl類庫也都一樣,不能作為輸入或者輸出的數據類型。

             注:動態編譯不會有這個問題,因為大家共享同一個C++運行庫。

            posted on 2009-09-29 11:58 大龍 閱讀(689) 評論(0)  編輯 收藏 引用

            综合久久久久久中文字幕亚洲国产国产综合一区首 | 香蕉久久一区二区不卡无毒影院| 99久久精品国内| 理论片午午伦夜理片久久| 久久精品国产99国产精品亚洲| 久久婷婷激情综合色综合俺也去| 国产精品久久久久久一区二区三区| 国产免费福利体检区久久| 天天爽天天狠久久久综合麻豆| 91精品国产91热久久久久福利| 思思久久好好热精品国产| 国产99久久精品一区二区| 色播久久人人爽人人爽人人片aV| 久久精品国产亚洲77777| 国产毛片久久久久久国产毛片| 午夜不卡久久精品无码免费| 日韩久久久久中文字幕人妻| 亚洲精品高清久久| 久久午夜羞羞影院免费观看| 久久久这里有精品中文字幕| 日日躁夜夜躁狠狠久久AV| 中文字幕精品久久久久人妻| 精品欧美一区二区三区久久久| 国产精品一区二区久久| 亚洲国产精品无码久久一线| 国产亚洲精品久久久久秋霞 | 国产精品欧美久久久天天影视| 99久久做夜夜爱天天做精品| 久久这里有精品视频| 久久精品成人免费国产片小草| 99久久精品免费看国产| 伊人色综合久久| 精品综合久久久久久97超人| 狠狠色丁香婷婷久久综合不卡| 国产成人久久精品激情| 成人资源影音先锋久久资源网| 久久精品无码午夜福利理论片| 久久婷婷五月综合97色| 久久99精品国产麻豆宅宅| 国产高潮国产高潮久久久91 | 久久www免费人成精品香蕉|