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

C++ Space

C++, 3DGame

2007年4月20日 #

關于DLL中對象的動態創建與刪除的問題

最近有看到一些文章討論怎樣輕松的使用DLL,其中有一個錯誤,那就是在DLL中創建的對象未在DLL中刪除,如下示:

//someheadfile.h
#include<memory>

class __declspec(dllexport) Interface
{
 
public:
  virtual 
void foo() = 0;
}
;

class __declspec(dllexport) Impl : public Interface
{
 
public:
   virtual 
void foo()
   
{}
}
;

__declspec(dllexport)
std::auto_ptr
<Impl> DLLCreate()
{
  
return std::auto_ptr<Impl>(new Impl);
}

上面的做法貌似可以做到自動刪除動態生成的對象,但,只有DLL和用戶都動態鏈接C/C++運行庫時它才會運行正確,否則,創建和刪除會在不同的堆棧空間進行,從而導致錯誤 
所以還是老實的在提供一個
DLLDelete()用于刪除在DLL中生成的對象。

posted @ 2007-04-20 13:35 Kooyu 閱讀(1603) | 評論 (6)編輯 收藏

2007年4月3日 #

一個浮點數表示產生的問題

半夜里剛睡著又被電話叫醒,一個項目的現場數據出現了錯誤。
我們的程序要分析的報告里的某一個字段使用了定點小數的表示方法,即兩個字節表示整數部分,再兩個字節表示小數部分。剛開始的時候沒注意到這里有個問題,那就是這種表示法要求小數部分一定是定長的,否則,就無法解析。例如,0.03和0.30的表示不同在哪里,0.30可不可以表示成0.300。怪我當初考慮欠佳,失敗。

posted @ 2007-04-03 00:27 Kooyu 閱讀(989) | 評論 (0)編輯 收藏

2007年3月9日 #

ACE_CDR::mb_align(ACE_Message_Block * mb)使用問題

ACE_CDR::mb_align(ACE_Message_Block * mb)用于對齊mb內部數據塊ACE_Data_Block所擁有的內存的起始地址,它的實現大致如下:

void
ACE_CDR::mb_align?(ACE_Message_Block?
* mb)
{
??char?
* ? const ?start? = ?ACE_ptr_align_binary(mb -> base?(),???ACE_CDR::MAX_ALIGNMENT);

??mb
-> rd_ptr?(start);
??mb
-> wr_ptr?(start);
}

由于要執行內存地址對齊,那么mb->base()所指示的地址可能需要向后移動(MAX_ALIGMENT - mb->base() % MAX_ALIGMENT)個字節。但在這個之后,mb->base()指向的可用內存將比它自己薄記的少,如果需要程序正常運行,那么依賴于在往它寫入數據時,寫入的字節數不能大于實際大小(這個實際大小為 :mb的薄記大小-移動的距離),而這需要由程序員來控制,容易出錯也就難免了。

也許可以在函數mb_align內部重設mb的大小,使其薄記大小與實際有效內存大小相符,但這引起內存拷貝,這個代價也太大了。

內存對齊的處理似乎應該在內存分配階段,比如提供類似下面的分配已對齊地址功能的分配器:

struct?Align_Alloc
{
????void?
* ?align_alloc(size_t?size,?unsigned?align)
????{
????????void?
* ?ptr? = ? new ?char[size? + ?align];
????????return?align_mb_ptr(ptr,?align);
????}
};

但ACE實際上沒這么做,它提供mb_align這個與內存分配毫不相干的功能,且希望由程序員自己來解決可能引發的問題!~
?

posted @ 2007-03-09 15:33 Kooyu 閱讀(1627) | 評論 (0)編輯 收藏

2007年3月7日 #

"危險"的函數指針類型的強制轉換

查看一個與別人合作的項目的代碼,發現了一個“隱秘”的問題,模擬這個問題如下:

typedef?void?( * foo_type)( int ,? int );

void?foo1(
int ,? int )
{
}

void?foo2()
{
}

int ?main()
{
??foo_type?f?1
= ? & foo1;??????????????????????// <1>
??foo_type?f?2
= ?(foo_type) & foo2;?? // <2>
???? return 0;
}
語句<1>肯定是對的,語句<2>強轉一個函數類型到foo_type類型,我當時擔心這會不會導致下面的語句導致運行時錯誤:
(*f2)(1,2);

幸運時這里它不會導致錯誤,這是由于:
<1>我們使用C/C++的默認函數調用方式__cdecl,也就是傳入的函數參數是由調用者清理的;
<2>函數foo2沒有使用任何參數。
這種做法肯定不值得提倡,但實際的項目中要避免還是不太容易,畢竟每個人的習慣不一樣,還有為了與框架協同工作,有時候可能也不得不這樣做。但是,一旦函數調用方式發生改變,或者被強轉的那個函數是帶參數的,而它又使用了這些參數,隱秘的錯誤也就埋下了。

posted @ 2007-03-07 13:38 Kooyu 閱讀(3092) | 評論 (1)編輯 收藏

2007年3月6日 #

實在讓人無法忍受

C++ = VC++ = MFC/ATL/COM
我已經記不清多少次看到與此類似甚至比這更離譜的關于C++的表述,真是害人不淺,特別是對C++新手而言。
還有一些C++的半調子動輒批評、諷刺他們一知半解的C++特性,拿C++與另一種毫不相干的語言大肆比較,得出稀奇古怪的結論。

一些氣話,心情不好。

posted @ 2007-03-06 13:17 Kooyu 閱讀(2317) | 評論 (7)編輯 收藏

僅列出標題  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            海角社区69精品视频| 国产日韩欧美中文| 亚洲欧洲一区二区三区在线观看 | 午夜一区二区三区在线观看| 欧美精品乱人伦久久久久久| 亚洲激情婷婷| 亚洲精品一区在线观看| 欧美日韩国产二区| 亚洲自拍16p| 西西人体一区二区| 伊人久久综合97精品| 欧美成人免费在线视频| 欧美日韩成人综合在线一区二区| 9色国产精品| 先锋资源久久| 在线电影国产精品| 亚洲人成网站999久久久综合| 欧美精品18+| 欧美一区二区三区日韩视频| 久久精品一区二区三区四区| 亚洲国产日韩在线| 99精品视频一区二区三区| 国产精品网站视频| 女仆av观看一区| 欧美午夜片在线观看| 久久成人久久爱| 欧美成人中文| 久久精品视频va| 欧美成人精品一区二区三区| 欧美一级淫片播放口| 久久婷婷成人综合色| 亚洲欧美在线播放| 免费成人av| 久久激情五月激情| 欧美激情视频网站| 久久久蜜桃一区二区人| 欧美乱在线观看| 久久久免费av| 国产精品爽爽爽| 亚洲精品美女| 亚洲第一精品夜夜躁人人躁| 亚洲午夜精品视频| 亚洲日本成人网| 久久精品国产亚洲5555| 亚洲专区国产精品| 欧美国产亚洲另类动漫| 久久久亚洲高清| 国产精品久久久久久久久借妻| 麻豆av福利av久久av| 国产精品视频你懂的| 亚洲美女电影在线| 亚洲欧洲日韩在线| 久久综合九色| 久久人人超碰| 国产亚洲精品bv在线观看| 日韩一区二区免费看| 亚洲精品日韩综合观看成人91| 欧美诱惑福利视频| 欧美自拍偷拍| 国产麻豆精品视频| 亚洲欧洲综合另类| 久久亚洲私人国产精品va| 久久久久久亚洲综合影院红桃| 国产精品欧美一区二区三区奶水| 亚洲巨乳在线| 99国产精品私拍| 欧美日本一区| 亚洲激情网址| 一区二区三区毛片| 欧美视频在线一区| 99精品热6080yy久久| 亚洲视频综合在线| 欧美视频在线观看免费| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 中文久久精品| 欧美日韩八区| 亚洲午夜国产一区99re久久 | 91久久精品国产91久久性色| 久久亚洲精选| 亚洲观看高清完整版在线观看| 亚洲国产精品一区二区第一页| 久久全国免费视频| 欧美激情网站在线观看| 91久久在线观看| 欧美母乳在线| 亚洲一区三区电影在线观看| 久久精品国产99国产精品| 黄色成人免费观看| 麻豆成人小视频| 一本大道久久精品懂色aⅴ| 亚洲午夜性刺激影院| 国产精品手机在线| 久久久青草婷婷精品综合日韩| 欧美不卡三区| 亚洲一二三区在线| 国产一区二区三区视频在线观看 | 91久久夜色精品国产九色| 一区二区三区国产盗摄| 国产精品久久久久三级| 香蕉亚洲视频| 欧美激情一二三区| 亚洲欧美日韩综合国产aⅴ| 国产亚洲a∨片在线观看| 久久一二三区| 日韩视频在线观看一区二区| 亚洲欧美日本伦理| 亚洲国产精品成人va在线观看| 欧美精品系列| 欧美专区第一页| 亚洲精品网站在线播放gif| 午夜在线观看欧美| 亚洲精品久久在线| 国产欧美亚洲精品| 欧美激情亚洲精品| 久久福利精品| 亚洲免费电影在线观看| 免费国产一区二区| 午夜日本精品| 亚洲人成网站影音先锋播放| 国产精品一区免费观看| 欧美黑人在线观看| 久久久999| 亚洲天堂激情| 日韩视频在线观看免费| 免费观看久久久4p| 久久精品久久99精品久久| 一本一本久久a久久精品牛牛影视| 国产日韩欧美在线一区| 欧美性理论片在线观看片免费| 鲁大师影院一区二区三区| 午夜欧美大尺度福利影院在线看| 91久久一区二区| 欧美 亚欧 日韩视频在线| 欧美有码视频| 亚洲综合丁香| 亚洲视频在线观看三级| 亚洲激情视频在线| 亚洲国产经典视频| 一区二区三区在线视频播放| 国产欧美一二三区| 国产精品私拍pans大尺度在线| 欧美日韩国产高清| 欧美日韩理论| 欧美日韩国产美女| 欧美日韩视频在线一区二区观看视频 | 鲁大师成人一区二区三区| 久久aⅴ国产欧美74aaa| 亚洲欧美成人综合| 亚洲一二三区视频在线观看| 夜夜嗨网站十八久久| 99精品免费视频| 日韩午夜中文字幕| 日韩一区二区久久| av成人天堂| 一区二区三区精品国产| 在线综合亚洲欧美在线视频| 99pao成人国产永久免费视频| 亚洲黄页视频免费观看| 亚洲七七久久综合桃花剧情介绍| 亚洲国产成人精品女人久久久 | 亚洲狠狠丁香婷婷综合久久久| 在线观看国产精品网站| 91久久在线播放| 亚洲午夜国产成人av电影男同| 亚洲一区免费在线观看| 久久精品99国产精品日本| 另类尿喷潮videofree| 女人天堂亚洲aⅴ在线观看| 亚洲国产精品毛片| 一区二区三区不卡视频在线观看| 亚洲欧美日韩人成在线播放| 欧美在线地址| 欧美激情四色| 国产日韩在线视频| 亚洲丁香婷深爱综合| 亚洲视频在线观看免费| 久久久久久久久岛国免费| 欧美大片在线观看| 亚洲一区二区成人在线观看| 久久精品人人做人人综合| 欧美国产专区| 国产日韩欧美精品一区| 亚洲精品久久视频| 翔田千里一区二区| 欧美激情第9页| 亚洲午夜精品久久| 免费欧美视频| 国产老肥熟一区二区三区| 亚洲国产精品传媒在线观看| 亚洲男人的天堂在线aⅴ视频| 久久久精品一区二区三区| 亚洲精品偷拍| 久久免费精品日本久久中文字幕| 欧美视频在线一区二区三区| 精品91视频| 亚洲欧美在线播放| 亚洲黄色在线| 久久久999精品免费| 国产精品狠色婷| 亚洲精品欧美日韩专区|