青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

Dll分配的內存塊,應用釋放的問題

轉載自:http://blog.csdn.net/blz_wowar/article/details/2176536

寫了個程序,在DLL中用malloc分配了一塊內存,但是在exe程序中釋放,結果程序crash,原因就是:
其原因可能是堆被損壞,這也說明 TestMySticker.exe 中或它所加載的任何 DLL 中有 bug。
想了半天以為是自己的寫法有問題,后終于在google上找到了原因,汗。。。

以下文字引用自 http://hi.baidu.com/huhe/blog/item/0b422edd1f1563d98c1029a3.html
很感謝作者的分析

一個模塊一個堆,一個線程一個棧。
dll里malloc的內存,在exe里free會出錯。

CRT(C運行時期庫)不是使用進程缺省的堆來實現malloc(new中調用malloc)的,而是使用一個全局句柄HANDLE _crtheap來分配內存的。這個_crtheap是在XXXCRTStartUp(CRT提供的進口點函數)中創建的。  
  由于CRT靜態連接,則樓主的DLL里有也有一個CRT,因此也有一個_crtheap。而在dll中的new使用dll中的_crtheap句柄分配堆,在exe中的delete使用exe中的_crtheap釋放堆,當然失敗!

解決辦法:
1。在DLL中輸出一個函數給EXE調用,專門用來釋放由DLL分配的內存;
2。用GlobalAlloc()代替new,用GlobalFree()代替delete;
3。使用單一的堆,分配內存使用HeapAlloc(GetProcessHeap(),0,size),釋放內存使用HeapFree(GetProcessHeap(),0,p);
4。把dll和exe的Settings的C/C++選項卡的Code   Generation的Use   Run-time   liberary改成Debug   Multithreaded   DLL,在Release版本中改成Multithreaded   DLL;這樣使用一個CRT了——MSVCRT.DLL。
 
以下是CSDN上的討論,同樣討論的很詳細了
http://topic.csdn.net/t/20031009/17/2338051.html 

以上是在網上找到的資料,今天做過詳細測試,結果如下:

測試1:使用malloc/free組合來分配和釋放內存,DLL中使用malloc分配,exe中使用free釋放。
我建的是Win32 DLL工程, C/C++->Code generation 設置是 Multithread DLL debug, 但是exe工程設置是MultiThread debug,所以不管怎么樣,總是會拋異常. 這就間接證明了上述的描述是正確的, 若我修改exe工程設置是 MultiThread DLL debug, 那么malloc/free組合就能很好的工作起來了。


測試2:使用HeapAlloc/HeapFree組合來分配和釋放內存,DLL中使用HeapAlloc分配,exe中釋放。
exe的配置還是MultiThread Debug,DLL中HeapAlloc(GetProcessheap(), HEAP_ZERO_MEMORY, 1024)分配,exe中HeapFree(GetProcessHeap(), 0, p)釋放,,則還是無法正常運行,還是拋異常。若exe中設置成MultiThread DLL debug就正常運行了。


測試3:還是使用HeapAlloc/HeapFree來進行,但是DLL中導出一個方法來釋放DLL中分配的內存。
若exe配置是MultiThread Debug,無法正常運行,拋異常。若修改成MultiThread DLL debug正常運行。

 
所以得到的結論如下:
不管是使用malloc/free組合還是HeapAlloc/HeapFree組合,exe工程均需要設置成MultiThread DLL debug才能正常運行起來的,CSDN上的那個討論在這兒貌似是由出入的,而且DLL的設置不能隨意修改。所以若有涉及到這種問題的,最好的辦法還是在哪個模塊分配的就在哪個模塊釋放最好,要不然反倒會引來更多的麻煩。

posted on 2014-03-25 03:32 楊粼波 閱讀(473) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            午夜精品久久一牛影视| 亚洲网站在线播放| 亚洲第一综合天堂另类专| 国产亚洲精品bv在线观看| 国产精品久久久久久模特| 国产精品久久久久免费a∨| 国产精品一区二区三区四区五区 | 激情欧美一区二区| 在线成人激情黄色| 一本综合久久| 久久精品视频99| 欧美成人精品激情在线观看 | 亚洲午夜精品久久久久久app| 亚洲调教视频在线观看| 久久成人一区| 亚洲男人的天堂在线| 永久久久久久| 亚洲一二三区在线观看| 欧美综合77777色婷婷| 欧美福利视频| 亚洲在线观看视频| 女女同性精品视频| 国产欧美综合在线| 一本高清dvd不卡在线观看| 久久久久一区二区| 一区二区三区欧美成人| 美女啪啪无遮挡免费久久网站| 欧美日韩精品一区二区| 激情国产一区二区| 亚洲欧美激情视频在线观看一区二区三区 | 日韩午夜精品视频| 亚洲一级二级在线| 欧美第十八页| 伊人色综合久久天天五月婷| 亚洲免费一在线| 亚洲高清资源综合久久精品| 亚洲精品视频在线看| 久久久久这里只有精品| 欧美日韩在线观看视频| 亚洲人午夜精品| 久久精品首页| 你懂的视频一区二区| 午夜精品一区二区三区四区 | 国产亚洲欧美aaaa| 亚洲欧美bt| aa国产精品| 欧美日韩亚洲视频一区| 亚洲国产欧美一区二区三区丁香婷| 欧美在线视频免费| 亚洲一区二区在线看| 国产精品久久毛片a| 亚洲女人天堂成人av在线| 一区二区免费看| 国产精品高潮呻吟| 香蕉乱码成人久久天堂爱免费 | 在线色欧美三级视频| 麻豆精品传媒视频| 久久亚洲春色中文字幕| 激情小说另类小说亚洲欧美| 久久久国产精品一区| 欧美呦呦网站| 一区二区三区在线观看视频| 欧美www视频| 欧美精品999| 亚洲欧美国产另类| 99成人精品| 中文国产亚洲喷潮| 久久这里只有| 久久久久在线观看| 亚洲三级网站| 日韩一级在线| 国产精品一区二区你懂的| 欧美在线www| 久久久久久久一区| 亚洲乱亚洲高清| 一本色道久久综合精品竹菊 | 在线日本欧美| 亚洲国产另类久久精品| 欧美精品自拍| 先锋影音久久| 亚洲一区激情| 欧美成人精品一区二区| 免费永久网站黄欧美| 一区二区欧美在线| 欧美一级在线播放| 91久久精品日日躁夜夜躁国产| 亚洲破处大片| 国产一区二区在线观看免费| 亚洲福利在线观看| 国产美女精品在线| 久久综合色婷婷| 欧美精品久久久久久久免费观看| 亚洲欧美伊人| 欧美刺激午夜性久久久久久久| 亚洲综合第一| 欧美成人午夜免费视在线看片| 亚洲欧美激情四射在线日 | 欧美日韩成人在线| 久久精品国产亚洲a| 欧美激情一区二区在线 | 亚洲美女一区| 欧美在线视频全部完| 亚洲第一精品夜夜躁人人躁| 亚洲精品国产品国语在线app| 国产精品稀缺呦系列在线| 免费成人av资源网| 国产精品一区二区久久| 亚洲国产美女精品久久久久∴| 国产精品永久免费在线| 亚洲久久一区二区| 亚洲国产成人精品女人久久久| 亚洲网站在线| 亚洲视频播放| 欧美成人伊人久久综合网| 久久人人97超碰人人澡爱香蕉| 欧美午夜精品久久久| 亚洲国产福利在线| 亚洲第一精品电影| 欧美日韩精品一区二区三区| 亚洲电影在线免费观看| 亚洲一区久久久| 亚洲午夜国产成人av电影男同| 久久综合网络一区二区| 久久香蕉国产线看观看av| 国产精品女主播一区二区三区| 亚洲国产精品一区二区www在线| 狠狠色狠色综合曰曰| 欧美一级黄色录像| 久久国产精品黑丝| 国产欧美一区二区三区在线看蜜臀| 99精品免费视频| 一区二区三区四区国产精品| 欧美激情视频在线播放| 欧美成人自拍视频| 亚洲日韩欧美视频| 欧美精品一区二区视频| 亚洲伊人观看| 国内外成人免费激情在线视频网站 | 欧美成人免费网| 国产美女精品| aaa亚洲精品一二三区| 亚洲专区在线视频| 国产精品久久久久一区二区| 亚洲一区免费在线观看| 欧美在线免费视频| 韩日欧美一区| 另类av导航| 亚洲精品黄网在线观看| 日韩午夜电影| 国产精品你懂的| 久久大逼视频| 亚洲国产老妈| 性做久久久久久免费观看欧美| 国产日产精品一区二区三区四区的观看方式 | 亚洲免费观看高清在线观看| 久久精品一区二区三区不卡| 久久精品99无色码中文字幕| 精久久久久久| 欧美日韩高清一区| 午夜一区二区三视频在线观看| 久久精品主播| 亚洲精品自在久久| 国产精品嫩草99a| 久久久久久综合| 亚洲精品中文字幕有码专区| 欧美伊人久久| 亚洲精品美女在线观看| 国产精品男人爽免费视频1 | 国产精品一区二区你懂的| 久久―日本道色综合久久| 亚洲国产一二三| 香蕉尹人综合在线观看| 在线观看一区欧美| 欧美性开放视频| 麻豆精品视频在线观看视频| 亚洲午夜女主播在线直播| 亚洲大片免费看| 欧美亚洲在线| 亚洲国产一区在线观看| 国产精品国产成人国产三级| 欧美永久精品| 亚洲国产精品va在线看黑人| 亚洲一区三区在线观看| 亚洲电影免费在线观看| 久久国产精品毛片| 中文在线一区| 亚洲美女毛片| 亚洲国产小视频| 狠狠久久五月精品中文字幕| 国产精品久久久久久久久借妻| 久热精品在线| 欧美呦呦网站| 亚洲欧美伊人| 亚洲天堂免费观看| 日韩小视频在线观看| 欧美黄色一区二区| 免费在线看一区| 久久综合久久久久88| 久久精品99久久香蕉国产色戒| 中文国产一区|