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

萬星星@豌豆莢 歡迎加入我們
一個吃軟飯的男人!!!!!我只想寫程序####
微博: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>
            久久久久国产精品一区三寸| 欧美a级片一区| 欧美午夜一区二区福利视频| 欧美高清在线一区二区| 久久先锋资源| 欧美高清日韩| 国产精品xnxxcom| 国产亚洲日本欧美韩国| 国产香蕉久久精品综合网| 一区二区在线观看视频| 国内揄拍国内精品久久| 亚洲第一精品福利| 一本久久综合亚洲鲁鲁| 99视频国产精品免费观看| 亚洲女同在线| 美女日韩在线中文字幕| 亚洲欧洲中文日韩久久av乱码| 麻豆久久精品| 亚洲美女中出| 欧美影院在线播放| 欧美国产精品v| 国产精品视频精品| 亚洲国产精品久久久久久女王| 亚洲免费播放| 久久精品日产第一区二区三区| 欧美国产精品人人做人人爱| 一区二区三区免费观看| 久久久久久久欧美精品| 欧美日本国产精品| 国产一区在线视频| 正在播放日韩| 奶水喷射视频一区| 午夜一级久久| 国产精品免费看久久久香蕉| 1769国内精品视频在线播放| 亚洲综合色丁香婷婷六月图片| 欧美+亚洲+精品+三区| 亚洲一区二区三区免费观看| 欧美国产精品专区| 在线看片成人| 久久露脸国产精品| 亚洲视频欧洲视频| 欧美激情在线免费观看| 影音先锋国产精品| 久久久国产91| 性欧美精品高清| 国产精品午夜久久| 亚洲尤物视频在线| 9久草视频在线视频精品| 欧美高清视频| 日韩午夜激情| 亚洲欧洲三级| 免费亚洲电影在线| 亚洲国产精品999| 久久香蕉国产线看观看av| 亚洲自啪免费| 国产精品大片免费观看| 亚洲在线成人| 亚洲第一在线综合在线| 香蕉久久精品日日躁夜夜躁| 国产精品久久久久久久久搜平片| 亚洲乱码一区二区| 亚洲人久久久| 欧美日产国产成人免费图片| 亚洲精品久久久久久久久久久| 欧美黑人一区二区三区| 麻豆91精品| 亚洲美洲欧洲综合国产一区| 91久久国产综合久久| 欧美精品亚洲一区二区在线播放| 日韩视频免费观看高清完整版| 亚洲精品乱码久久久久| 欧美午夜精品理论片a级按摩 | 国产一区在线看| 久久精品成人一区二区三区| 欧美在线日韩精品| 亚洲丰满在线| 9l视频自拍蝌蚪9l视频成人| 国产精品久久综合| 久久精品一本| 免费久久精品视频| 亚洲视频在线看| 亚洲欧美色婷婷| 精品白丝av| 亚洲激情国产精品| 国产精品久久久久久久久久久久| 午夜激情一区| 久久综合久久美利坚合众国| 亚洲精品日韩在线| 亚洲资源av| 亚洲黄色免费网站| 一区二区欧美国产| 激情久久一区| 一本色道久久综合亚洲精品小说| 国产精品久久久久久久久搜平片| 久久久午夜精品| 欧美日韩国产bt| 老司机亚洲精品| 欧美视频免费在线| 毛片av中文字幕一区二区| 欧美精品久久99久久在免费线| 欧美在现视频| 欧美日韩成人在线观看| 久久亚洲电影| 国产精品免费电影| 最新国产の精品合集bt伙计| 国产日韩欧美| 在线一区日本视频| 亚洲欧洲三级| 香蕉久久夜色精品国产使用方法| 亚洲日韩成人| 久久天堂av综合合色| 亚洲男女自偷自拍| 免费成人高清在线视频| 久久国产精品一区二区三区四区 | 久久超碰97中文字幕| 99视频国产精品免费观看| 亚洲欧美国产精品桃花| 久久精品国产清自在天天线| 一区在线免费| 欧美一区二区精品久久911| 一区二区三区成人| 麻豆91精品91久久久的内涵| 久久久久久久999| 国产乱码精品| 亚洲天堂偷拍| 亚洲在线播放电影| 欧美精品一二三| 欧美激情一二区| 亚洲国产成人不卡| 久久久久久久一区二区| 久久国产精品99久久久久久老狼| 欧美日韩免费视频| 亚洲美女在线国产| 中日韩美女免费视频网址在线观看| 久久综合五月天婷婷伊人| 久久久一区二区| 国产亚洲精品久久久久动| 亚洲男女自偷自拍| 亚洲欧美亚洲| 国产女同一区二区| 欧美一进一出视频| 久久久777| 黄色成人片子| 另类综合日韩欧美亚洲| 欧美激情在线观看| 亚洲乱码精品一二三四区日韩在线| 欧美成人高清视频| 亚洲精品在线观看视频| 亚洲视频图片小说| 国产精品中文在线| 久久久久久久成人| 亚洲国产精品精华液2区45| 亚洲福利视频免费观看| 免费在线亚洲欧美| 亚洲精品女人| 一区二区激情| 国产区日韩欧美| 久久三级视频| 亚洲欧洲日本专区| 欧美一级日韩一级| 伊人激情综合| 欧美精品国产一区二区| 亚洲欧美激情视频| 欧美激情精品久久久久久大尺度 | 亚洲欧美一区二区精品久久久| 欧美一级日韩一级| 亚洲高清毛片| 国产精品伦子伦免费视频| 欧美一区二区三区的| 欧美电影电视剧在线观看| 在线亚洲精品| 国外成人在线| 欧美特黄一级大片| 久久久精品国产免大香伊 | 在线日本高清免费不卡| 欧美成人免费网站| 亚洲一区在线看| 亚洲高清在线观看一区| 午夜影视日本亚洲欧洲精品| 在线观看av不卡| 国产精品爽黄69| 亚洲人成网站精品片在线观看| 久久久久久尹人网香蕉| 亚洲电影第三页| 欧美一区二区在线| 亚洲精品在线视频| 国产一本一道久久香蕉| 欧美日韩精品综合| 久久综合伊人77777| 亚洲综合色视频| 亚洲免费av网站| 欧美高清在线| 久久精品视频网| 亚洲欧美日韩在线| 亚洲美女少妇无套啪啪呻吟| 国产亚洲综合性久久久影院| 国产精品v欧美精品v日韩| 欧美顶级大胆免费视频| 久久亚裔精品欧美|