dll中使用到容器的全局變量在mfc中報內存泄漏

這幾天發現一個蛋疼的問題,在vs2015上,dll中使用到容器的全局變量在mfc中報內存泄漏。
這裏寫圖片描述
這是怎麼出現的呢,我加入了opengl的依賴後就出現了。是不是很神奇?而且只針對那些使用到容器的全局變量。

例如

char tmp[111]; //不會報泄漏。
  std::string sd = "why is that happened"; //報泄漏

那到底是什麼原因呢?
我猜是由於opengl庫的加入擾亂了原來進程卸載時的模塊釋放順序(這不代表出錯),在mfc主程序退出時檢測內存泄漏的時刻,dll裏面的容器全局變量還沒析構導致誤報,可能在mfc主程序檢測完纔會析構。另外,opengl能有這麼大“能耐”可能是因爲他是系統自帶庫且全局容器變量特殊處理有關。
基於這猜測網上找一下別人會不會出現這問題。找到一些類似的。
http://blog.csdn.net/clever101/article/details/7907417
http://blog.csdn.net/changbaolong/article/details/7935192
不是我的問題就好。
對了在vs2015上檢測內存泄漏有自帶的工具,很方便,下次專門寫個文章介紹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章