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

萬星星@豌豆莢 歡迎加入我們
一個吃軟飯的男人!!!!!我只想寫程序####
微博:http://weibo.com/wanlianwen
posts - 172,  comments - 1253,  trackbacks - 0
這兩天在寫一些導出類庫,在測試的時候遇到十分詭異的問題,使我遭受痛苦折磨。經驗是寫代碼到處都可能是炸彈,如果不是見多識光還真有可能懷疑計算機或者相信有鬼。

下面來引入問題:
我寫了一個類,需要保存Tooltip信息和一些動態數組信息。結構應該類似下面這樣:
class SOMEDLL_API CSomeDll {
public:
    CSomeDll(
void);
    
// TODO: 在此添加您的方法。
    ~CSomeDll();

    TOOLINFO m_ti;
    
int* pInt;
}
;
為了說明問題適當調整了一下,實際情況那個動態數組使用的是stl容器,當然不影響問題說明。


這個想法很自然看起來也不可能有錯誤,于是我就做了測試,結果出現了問題。當時由于代碼很多,我一段一段進行了分析,最終發現調用該導出類出的問題。這樣我直接做了這樣的測試:
CSomeDll* pPtr = new CSomeDll;
    delete pPtr;
結果錯誤,堆內存毀壞。百思不得其解,開始懷疑stl的分配器導致的問題,修改成自己寫的集合類,仍然有問題。有開始一段一段屏蔽代碼,最終發現只要TOOLINFO后面有動態數組就會導致問題,但是還是沒有找到問題的根本。

開始不相信計算機了,開始懷疑有鬼了。無奈,新建一個win32的helloworld,刪除所有代碼和資源,只剩下winmain,重復上面的new和delete,發現居然沒有問題了。真是見鬼了??難道預編譯頭都能引起內存問題嗎??幸好同事zengfanmiao提到stdafx里面的內容讓我突然想起那些定義的宏會不會導致內存分配問題。

查看TOOLINFO的定義:
typedef struct tagTOOLINFOW {
    UINT cbSize;
    UINT uFlags;
    HWND hwnd;
    UINT_PTR uId;
    RECT rect;
    HINSTANCE hinst;
    LPWSTR lpszText;
#
if (_WIN32_IE >= 0x0300)
    LPARAM lParam;
#endif
#
if (_WIN32_WINNT >= 0x0501)
    
void *lpReserved;
#endif
}
 TTTOOLINFOW, NEAR *PTOOLINFOW, *LPTTTOOLINFOW;

哦,天哪,發現眉目了,果然是這個宏定義導致的。在測試工程里面沒有定義_WIN32_WINNT,而在dll里面定義該宏為0x0501。所以該對象大小在dll比在測試時大4個字節。一旦對dll里面數據進行了修改就會導致越界訪問。這樣在delete的時候,就會報錯。

這個問題在之前就遇到過,但是不知道怎么就巧合避開了。這次終于了解了內幕,寫代碼還真的小心。MS產品線太長,os的維護導致大量結構體存在這樣做法,只能搖頭嘆息,牢記牢記?。?!
posted on 2007-07-17 22:12 萬連文 閱讀(1984) 評論(4)  編輯 收藏 引用 所屬分類: 亂七八糟

FeedBack:
# re: 導出類使用值得注意的一個問題
2007-07-17 23:13 | sunny
把TOOLINFO m_ti;改成TOOLINFO *m_ti;就可以解決問題了。  回復  更多評論
  
# re: 導出類使用值得注意的一個問題
2007-07-18 08:36 | SmartPtr
這中錯誤一不小心就會出現,而且很難調,   回復  更多評論
  
# re: 導出類使用值得注意的一個問題
2007-07-18 09:25 | 金慶
導出類要保證類定義DLL內外一致。  回復  更多評論
  
# re: 導出類使用值得注意的一個問題
2007-07-18 21:34 | Corner Zhang
這樣做還是會出tts問題的,若CSomeDll是個singleton這種在dll之外new 和 delete才不會出問題,為了避開tts問題可以在dll中加入對CSomeDll創建和銷毀用的導出函數  回復  更多評論
  
簡歷下載
聯系我

<2006年3月>
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用鏈接

留言簿(66)

隨筆分類

隨筆檔案

相冊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            女仆av观看一区| 亚洲最新色图| 99精品视频免费观看| 欧美日韩日日骚| 欧美**人妖| 欧美日韩精品在线| 欧美视频在线观看免费网址| 欧美日韩日本网| 国产精品萝li| 在线成人性视频| 99精品国产高清一区二区| 亚洲男人的天堂在线观看| 久久成人精品视频| 免费成人小视频| 日韩视频中文| 亚洲男人影院| 另类图片国产| 国产精品每日更新| 伊人婷婷欧美激情| 亚洲图片欧美一区| 免费看精品久久片| 亚洲精品久久久久久久久久久久久| 亚洲精品国产精品乱码不99按摩| 亚洲四色影视在线观看| 欧美中文字幕视频在线观看| 美女久久网站| 国产视频一区在线观看| 99精品欧美| 麻豆av一区二区三区| 亚洲精品一区二区三区不| 久久国产精品久久精品国产| 欧美日韩精品一区二区| 在线日韩日本国产亚洲| 亚洲欧美高清| 亚洲精品在线视频| 久久午夜精品| 国产综合欧美| 亚洲自拍偷拍网址| 亚洲激情视频网| 久久久久久午夜| 国产美女精品一区二区三区| 亚洲精品一品区二品区三品区| 亚洲欧美成人一区二区三区| 亚洲激情综合| 欧美成人第一页| 精品成人一区二区| 午夜一区二区三区在线观看| 亚洲欧洲视频在线| 美日韩免费视频| 在线观看视频日韩| 久久久久久一区二区| 亚洲欧美国产不卡| 国产精品久久久一区麻豆最新章节 | 亚洲美女av网站| 蜜臀av一级做a爰片久久 | 欧美尤物一区| 国产精品国产三级国产普通话蜜臀| 最新成人在线| 欧美人成网站| 亚洲人成人77777线观看| 久久久久亚洲综合| 亚洲一区精品在线| 国产精品日韩欧美综合| 亚洲欧美视频在线| 一区二区三区久久久| 欧美日本在线播放| 中文日韩在线视频| 亚洲视频免费在线| 国产日本欧美一区二区三区| 性亚洲最疯狂xxxx高清| 亚洲欧美中文另类| 国产在线精品自拍| 久久一本综合频道| 噜噜爱69成人精品| 日韩一级精品| 99热免费精品在线观看| 国产精品男人爽免费视频1| 香蕉成人久久| 久久精品中文字幕免费mv| 亚洲第一区色| 亚洲国产欧美国产综合一区| 欧美日本高清视频| 亚洲欧美视频一区二区三区| 欧美一区二区三区的| 亚洲第一偷拍| 亚洲毛片一区二区| 国产欧美1区2区3区| 免费在线看一区| 欧美精品入口| 欧美在线观看一区| 免费在线亚洲| 欧美综合国产| 欧美欧美在线| 久久综合影视| 欧美激情第一页xxx| 欧美一区二区三区久久精品| 久久久久久久综合色一本| 一区二区高清视频| 久久国产日韩欧美| 亚洲午夜激情网页| 久久一区欧美| 亚洲欧美一区二区三区久久 | 亚洲人成人一区二区三区| 欧美日韩精品二区| 久久亚洲精品一区二区| 欧美国产亚洲精品久久久8v| 欧美在线免费一级片| 欧美成人中文| 久久久久9999亚洲精品| 欧美少妇一区二区| 欧美国产日韩一区| 国产精品视频久久久| 亚洲国产裸拍裸体视频在线观看乱了| 国产精品入口日韩视频大尺度| 欧美成人国产va精品日本一级| 亚洲一区二区不卡免费| 久久久久国产精品人| 亚洲一区二区高清| 久久人人97超碰国产公开结果| 亚洲自拍三区| 欧美日韩一级片在线观看| 亚洲电影免费观看高清完整版| 国产精品久久毛片a| 日韩午夜电影| 99国产精品久久久久老师| 久久综合久久综合九色| 久久久久久亚洲精品杨幂换脸| 国产精品红桃| 亚洲精品视频免费观看| 亚洲精品人人| 免费影视亚洲| 免费短视频成人日韩| 国产亚洲毛片| 久久成人综合网| 久久精品一二三区| 国产一区二区三区四区老人| 亚洲欧美春色| 欧美专区亚洲专区| 国产一区二区高清不卡| 亚洲自拍三区| 久久精品二区| 黄色成人在线| 久久人人精品| 欧美国产日韩视频| 日韩午夜中文字幕| 欧美日韩国产精品一卡| 夜夜精品视频一区二区| 亚洲综合欧美日韩| 国产欧美精品日韩区二区麻豆天美| 亚洲天堂成人| 久久成人免费网| 尤物在线精品| 欧美精品一区在线| 亚洲一区二区三区在线看| 欧美一站二站| 亚洲第一精品福利| 欧美另类在线观看| 亚洲欧美另类在线| 久久综合九色综合久99| 91久久精品国产91久久性色| 欧美伦理视频网站| 亚洲一线二线三线久久久| 欧美在线你懂的| 91久久国产综合久久蜜月精品| 欧美国产高潮xxxx1819| 一区二区三区色| 老巨人导航500精品| aa亚洲婷婷| 国产日韩精品一区二区| 久久久久在线| 亚洲五月婷婷| 欧美黑人在线播放| 亚洲欧美日韩在线| 亚洲风情亚aⅴ在线发布| 欧美日韩国产一区| 久久爱另类一区二区小说| 亚洲国产综合在线| 久久激情综合| 日韩网站在线看片你懂的| 国产美女搞久久| 欧美精品激情在线| 欧美在线视频免费| 一本久道综合久久精品| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲一本视频| 亚洲第一久久影院| 99精品99| 欧美成人午夜激情视频| 亚洲日本乱码在线观看| 国产精品自拍视频| 欧美刺激午夜性久久久久久久| 亚洲午夜精品一区二区| 欧美激情第一页xxx| 久久精品女人天堂| 亚洲制服少妇| 一本大道久久精品懂色aⅴ| 有码中文亚洲精品| 国产亚洲毛片在线| 国产精品一级久久久| 欧美日韩在线视频一区|