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

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>
            久久久国产一区二区三区| 欧美另类综合| 国产综合香蕉五月婷在线| 久久精品国产免费看久久精品| 亚洲网站在线观看| 国产精品视频不卡| 久久免费视频这里只有精品| 久久久不卡网国产精品一区| 亚洲黄页一区| 亚洲免费av片| 国产精品一区久久久| 久久免费观看视频| 免播放器亚洲一区| 亚洲一区二区三区精品视频 | 国内精品久久久久久久97牛牛| 久久都是精品| 六月天综合网| 艳女tv在线观看国产一区| 一本色道久久综合精品竹菊| 国产美女精品免费电影| 免费人成精品欧美精品| 欧美精品在线一区二区| 午夜精品久久久久| 久久九九精品| 一区二区国产在线观看| 性欧美大战久久久久久久久| 亚洲电影在线播放| 一本色道久久综合亚洲精品不| 国产欧美一区二区精品仙草咪| 麻豆亚洲精品| 欧美性淫爽ww久久久久无| 久久久久久久久久久久久久一区 | 一区二区三区久久精品| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美激情视频网站| 亚洲综合第一页| 久久天堂成人| 欧美亚洲免费电影| 欧美成人精品福利| 久久精品国产欧美激情| 欧美日韩国产va另类| 久久久天天操| 国产精品一区二区三区观看 | 亚洲综合电影一区二区三区| 久久艳片www.17c.com| 性色av一区二区三区| 欧美高清视频| 久久综合九色欧美综合狠狠| 国产精品久久久一本精品| 欧美大片免费久久精品三p | 欧美日韩一级黄| 欧美aⅴ一区二区三区视频| 国产精品三级视频| 亚洲免费观看视频| 亚洲人成欧美中文字幕| 久久午夜激情| 老巨人导航500精品| 国产视频综合在线| 午夜电影亚洲| 久久av最新网址| 国产精品免费久久久久久| 亚洲精品在线三区| 日韩一区二区精品葵司在线| 久久综合色婷婷| 猛男gaygay欧美视频| 国产一区二区三区奇米久涩| 亚洲性图久久| 欧美一级播放| 国产免费成人av| 亚洲欧美日韩精品一区二区 | 99re6热只有精品免费观看 | 久久久精彩视频| 久久久人成影片一区二区三区| 国产日韩精品电影| 欧美一级视频免费在线观看| 欧美一区=区| 国产视频一区二区在线观看| 欧美亚洲三级| 免费不卡亚洲欧美| 亚洲国产一区二区在线| 欧美韩日精品| 日韩亚洲欧美成人| 午夜一区在线| 国精产品99永久一区一区| 久久精品亚洲精品| 亚洲春色另类小说| 一区二区三区三区在线| 亚洲一区黄色| 国产视频久久| 免费观看成人| 中文精品视频| 久久久久久久综合| 亚洲精品1区| 欧美日韩精品二区| 亚洲永久在线观看| 免费91麻豆精品国产自产在线观看| 亚洲激情视频| 欧美性猛交一区二区三区精品| 亚洲一区视频在线| 免费观看30秒视频久久| 一区二区国产精品| 国内精品久久久| 欧美激情免费观看| 亚洲欧美网站| 亚洲国产精品电影| 欧美影院成人| 亚洲国产综合在线看不卡| 欧美日本在线| 久久大逼视频| 一区二区三区欧美成人| 麻豆精品在线观看| 亚洲一级二级在线| 悠悠资源网久久精品| 欧美性猛交xxxx乱大交退制版| 久久精品综合| 一区二区欧美在线观看| 欧美h视频在线| 欧美一区二区在线| 一本一本久久| 一区二区三区无毛| 国产精品日韩欧美大师| 欧美高清在线| 久久免费少妇高潮久久精品99| 亚洲先锋成人| 亚洲精品国产无天堂网2021| 麻豆精品一区二区综合av| 羞羞答答国产精品www一本| 亚洲美女淫视频| 在线观看视频免费一区二区三区| 国产精品久久久久aaaa| 欧美日韩日日骚| 免费久久精品视频| 久久九九免费视频| 欧美亚洲免费高清在线观看| 在线一区视频| 99天天综合性| 日韩视频二区| 日韩网站在线看片你懂的| 欧美激情片在线观看| 裸体素人女欧美日韩| 久久精品日韩| 久久精品123| 久久成人免费| 久久精品视频在线看| 亚洲欧美国产77777| 亚洲尤物视频在线| 亚洲欧美日本国产有色| 亚洲色图制服丝袜| 一区二区日韩免费看| 在线视频亚洲| 中文精品视频| 午夜精品久久久久久久99水蜜桃| 亚洲午夜久久久久久久久电影院| 一区二区久久久久| 亚洲尤物在线视频观看| 午夜精品久久久久久久99水蜜桃| 亚洲欧美福利一区二区| 久久9热精品视频| 久久久999国产| 免费在线成人| 亚洲人体影院| 亚洲一区自拍| 久久久久久久久久久久久9999 | 亚洲视频精选| 午夜精品久久久久影视| 久久精品日韩欧美| 免费在线观看一区二区| 欧美激情1区2区| 欧美三区在线观看| 国产亚洲免费的视频看| 亚洲福利久久| 亚洲一区综合| 久久在线视频在线| 亚洲精品极品| 午夜欧美大尺度福利影院在线看 | 亚洲日韩视频| 午夜精品国产精品大乳美女| 久久久精品五月天| 欧美精品一区在线播放| 国产精品日日摸夜夜摸av| 1024成人网色www| 亚洲字幕在线观看| 欧美成人精品在线| 亚洲小说春色综合另类电影| 久久综合导航| 国产精品久久久久久久app| 国模叶桐国产精品一区| 99国产精品久久久久久久成人热| 性久久久久久久| 亚洲国产精品一区在线观看不卡| 亚洲欧美欧美一区二区三区| 久久影视精品| 国产日本欧美在线观看| 一区二区av在线| 久久综合伊人77777蜜臀| 日韩视频在线免费| 久久久午夜视频| 国产欧美日韩亚洲一区二区三区| 亚洲剧情一区二区| 久热爱精品视频线路一|