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

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

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

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


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

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

查看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;

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

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

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

<2013年3月>
242526272812
3456789
10111213141516
17181920212223
24252627282930
31123456

常用鏈接

留言簿(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>
            欧美日本韩国| 在线日韩日本国产亚洲| 久久免费视频一区| 欧美日韩天天操| 欧美一级淫片播放口| 国产精品久久99| 亚洲影院一区| 欧美在线视频免费| 亚洲第一精品久久忘忧草社区| 久久精品夜色噜噜亚洲a∨| 久久久久九九九九| 1769国产精品| 欧美日韩一区二区三区在线观看免 | 国产一区二区三区在线观看网站| 欧美激情久久久久久| 一区二区三区黄色| 欧美日本久久| 亚洲精品美女91| 亚洲精品一区久久久久久| 亚洲综合成人婷婷小说| 久久天天狠狠| 欧美激情一区二区三区全黄| 亚洲一区二区三区高清| 亚洲精品国产视频| 亚洲国产成人一区| 久久久久久久成人| 久久久噜噜噜| 伊人夜夜躁av伊人久久| 久久精品国产免费看久久精品| 久久大综合网| 国产尤物精品| 久久在线91| 欧美成人黑人xx视频免费观看| 在线欧美福利| 欧美a级片一区| 亚洲电影天堂av| 一区二区三区 在线观看视频| 欧美精品免费在线| 99国产精品自拍| 亚洲综合二区| 国产一区二区精品久久99| 久久久久99| 亚洲成色777777女色窝| 日韩视频在线观看一区二区| 欧美久久婷婷综合色| 一二美女精品欧洲| 久久99在线观看| 亚洲国产导航| 欧美日韩午夜视频在线观看| 亚洲一卡久久| 久久久久久久国产| 亚洲国产小视频在线观看| 欧美国产精品日韩| 在线中文字幕一区| 久久久国产精品一区| 亚洲国产一区二区三区a毛片 | 欧美好骚综合网| 99精品欧美| 久久精品国产免费| 亚洲破处大片| 国产精品你懂的在线欣赏| 久久久精品一区| 一本久道久久综合婷婷鲸鱼| 久久久97精品| 一区二区国产精品| 国产综合色一区二区三区| 欧美国产日韩一区| 亚洲欧美日韩一区| 亚洲欧洲精品一区二区精品久久久 | 国内精品嫩模av私拍在线观看| 毛片一区二区| 亚洲欧洲99久久| 亚洲高清不卡av| 欧美在线一二三区| 亚洲毛片在线免费观看| 国产一区二区福利| 欧美日韩综合在线| 久久在线观看视频| 亚洲欧美日韩天堂| 亚洲精品欧美| 欧美成人午夜77777| 性做久久久久久久免费看| 亚洲三级影院| 激情综合网激情| 国产精品永久免费观看| 欧美精品粉嫩高潮一区二区| 久久精品国产综合精品| 亚洲一区二区三区中文字幕| 亚洲欧洲偷拍精品| 美女视频网站黄色亚洲| 久久精品动漫| 午夜视频一区在线观看| 一区二区av在线| 亚洲国产日韩一区| 欧美日韩理论| 亚洲色图自拍| 亚洲一区二区三区视频| 国产精品一区亚洲| 欧美中文字幕视频| 久久久xxx| 亚洲精品日韩在线观看| 亚洲精品系列| 国产精品一区一区| 免费在线观看精品| 欧美午夜精品久久久| 欧美一区二区三区在线观看| 久久精品国产99| 亚洲精品一区二区三区樱花| 亚洲乱码精品一二三四区日韩在线| 国产精品中文字幕欧美| 久久中文久久字幕| 国内精品久久久久影院优| 欧美高清自拍一区| 激情欧美日韩一区| 午夜欧美不卡精品aaaaa| 蜜桃久久精品乱码一区二区| 99re国产精品| 欧美午夜精品一区二区三区| 亚洲福利在线看| 亚洲国产精品黑人久久久| 在线午夜精品| 久久久精品一区二区三区| 亚洲欧美成人在线| 美女免费视频一区| 午夜在线电影亚洲一区| 亚洲精品老司机| 亚洲视频福利| 正在播放欧美视频| 亚洲欧美在线x视频| 欧美综合第一页| 久久久蜜桃一区二区人| 久久亚洲欧美| 先锋a资源在线看亚洲| 久久精品国产v日韩v亚洲| 在线看片成人| 91久久夜色精品国产九色| 亚洲免费观看高清在线观看 | 99在线精品免费视频九九视| 日韩视频一区二区三区在线播放| 亚洲最新视频在线| 午夜视频一区| 欧美大片免费看| 亚洲视频综合| 久久久水蜜桃av免费网站| 欧美精品成人| 国产午夜精品麻豆| 亚洲日韩中文字幕在线播放| 亚洲欧美一区二区精品久久久| 久久男人av资源网站| 亚洲黄色成人| 午夜影院日韩| 欧美另类高清视频在线| 国产亚洲精品自拍| 99在线精品视频在线观看| 久久久久久久91| 亚洲人成网站在线观看播放| 性亚洲最疯狂xxxx高清| 欧美日本在线| 狠狠入ady亚洲精品| 日韩视频一区二区| 亚洲激情一区| 一个人看的www久久| 欧美亚洲在线观看| 久久琪琪电影院| 亚洲精品在线二区| 久久成人免费电影| 免费成人av| 韩国精品在线观看| 一区二区三区国产| 久久久精品国产99久久精品芒果| 一本色道久久综合狠狠躁篇的优点| 午夜影院日韩| 欧美日韩伦理在线免费| 亚洲国产精品久久久久秋霞不卡| 亚洲桃色在线一区| 欧美成va人片在线观看| 一本一本久久a久久精品综合麻豆| 久久资源av| 国产精品一二一区| 日韩一区二区免费看| 先锋影院在线亚洲| 亚洲精品乱码视频| 久久婷婷久久| 国产午夜精品麻豆| 午夜亚洲性色视频| 91久久视频| 久久综合久久久| 国产精品porn| 亚洲精品字幕| 久热综合在线亚洲精品| 亚洲欧美日韩直播| 欧美二区在线看| 影视先锋久久| 欧美成人午夜激情在线| 亚洲欧美视频| 国产精品麻豆成人av电影艾秋| 国产资源精品在线观看| 久久三级视频| 亚洲欧美日韩国产综合| 欧美性色aⅴ视频一区日韩精品|