• <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>

            大龍的博客

            常用鏈接

            統(tǒng)計

            最新評論

            dll靜態(tài)編譯的問題 ---- 轉

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

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

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

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

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

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

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

            精品人妻伦一二三区久久| 午夜人妻久久久久久久久| 久久亚洲中文字幕精品有坂深雪 | 久久人人爽人人爽人人AV东京热| 日韩精品无码久久一区二区三| 久久美女人爽女人爽| 国产精品一区二区久久| 国产精品无码久久久久久| 亚洲国产另类久久久精品 | 国产午夜精品久久久久九九电影| 蜜桃麻豆www久久| 亚洲国产成人久久综合碰碰动漫3d | 蜜臀av性久久久久蜜臀aⅴ | 亚洲七七久久精品中文国产| 亚洲欧美国产日韩综合久久| 久久亚洲精品成人无码网站| 久久精品国产精品亚洲精品| 中文字幕乱码人妻无码久久| 久久午夜无码鲁丝片| 国产精品免费福利久久| 一本久久久久久久| 美女久久久久久| 久久香蕉国产线看观看精品yw| 精品熟女少妇av免费久久| 伊人久久大香线蕉精品| 欧美久久一区二区三区| 亚洲AV无码1区2区久久| 欧美一区二区精品久久| 久久精品国产欧美日韩99热| 日韩av无码久久精品免费| 国产福利电影一区二区三区久久久久成人精品综合 | 久久99热精品| 日本亚洲色大成网站WWW久久| 成人久久免费网站| 久久精品国产亚洲7777| 久久久久久毛片免费播放| 无夜精品久久久久久| 人人狠狠综合久久亚洲婷婷| 精品国产乱码久久久久久人妻| 99久久久久| 狠狠色丁香久久综合五月|