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

隨筆 - 119  文章 - 290  trackbacks - 0

博客搬家了哦,請移步
叫我abc

常用鏈接

留言簿(12)

隨筆分類

我的博客

搜索

  •  

積分與排名

  • 積分 - 306720
  • 排名 - 84

最新評論

閱讀排行榜

#pragma pack(1)

struct Base
{
    
int a;
    
char b;
    
int c;
};

template
<typename T>
struct Child_X : public Base
{
    T data[
1];
};

#pragma pack()

猜一下下面兩個sizeof的結(jié)果:
sizeof(Base)
sizeof(Child_X<int>)

sizeof(Base) = 9。一些猜對或者沒猜對的同學(xué)應(yīng)該用google好好補充一下基礎(chǔ)知識。
sizeof(Child_X<int>) = sizeof(Base) + sizeof(int) = 13。
應(yīng)該是13,但是16也是對的,這就是編譯器的差異。

M$的VS2008,執(zhí)行的結(jié)果是 sizeof(Child_X<int>) = 13。
linux的gcc-4.4,執(zhí)行結(jié)果是 sizeof(Child_X<int>) = 16。
當兩個平臺編譯的程序互相通訊,消息里面包含Child_X<>結(jié)構(gòu)時,肯定會發(fā)生一些不那么有趣的事情。
這個不有趣的事情大概有兩種表現(xiàn)形式:
1.當你明顯的執(zhí)行一個操作后,收到一條不太對頭的Child_X消息,程序崩潰了。這種的問題很容易查。
2.當你執(zhí)行或者不執(zhí)行操作,不久程序崩潰了,根據(jù)崩潰看起來是某處內(nèi)存寫串了,而你在這段時間內(nèi)沒有收到任何Child_X消息。
不幸的是我遇上的就是第二種情況,這種情況麻煩的地方就在于崩潰的位置和崩潰的原因之間有一段不會太短的距離,其本質(zhì)就是大小不正確的Child_X消息初始化程序,結(jié)果程序的狀態(tài)是不正確的,但是這個不正確的狀態(tài)直到不久使用某些操作才引起嚴重錯誤,而錯誤看起來就像是內(nèi)存寫串了。

造成這種差異的原因是,VC在實例化模板的時候,使用了定義模板的上下文;而gcc在實例化模板的時候,則使用的是第一次實例化模板的那段代碼的上下文。
我想標準肯定沒有規(guī)定這個細節(jié),不過VC的實現(xiàn)方案更符合常規(guī)的心里預(yù)期。而標準委員會除了開會吵架,已經(jīng)很久沒有作為了。

最后跨平臺的解決方案是,在pack上下文里對模板進行實例化
#pragma pack(1)

template
<typename T>
struct Child_X : public Base
{
    T data[
1];
};
template 
struct Child_X<short>;
template 
struct Child_X<int>;

// 不過這種方案只能用來對付需要實例化的類型數(shù)量較少的情況

#pragma pack()
posted on 2010-01-09 20:20 LOGOS 閱讀(1780) 評論(3)  編輯 收藏 引用

FeedBack:
# re: bugfix:模板結(jié)構(gòu)的跨平臺差異 2010-01-09 21:14 tanchuhan
沒必要用#pragma pack(1), 自己定義結(jié)構(gòu)時記得對齊就是了,你看Windows里的絕大部分struct都是4字節(jié)對齊的(空位可以用reserved命名).
對齊肯定是有很多好處的,不然編譯器干嘛費心去對齊結(jié)構(gòu)里的字段.  回復(fù)  更多評論
  
# re: bugfix:模板結(jié)構(gòu)的跨平臺差異 2010-01-09 23:10 LOGOS
@tanchuhan
記得對齊其實要求很高的智力與注意力
在網(wǎng)絡(luò)消息結(jié)構(gòu)里,非常關(guān)心實際的對齊大小,一定會進行顯式的設(shè)置,不管是通過工程配置還是代碼
按1字節(jié)對齊,這個現(xiàn)狀比較普遍  回復(fù)  更多評論
  
# re: bugfix:模板結(jié)構(gòu)的跨平臺差異 2010-01-10 15:10 littlewater
顯然,在通訊里面使用C++的結(jié)構(gòu)而不是POD,不是一種明智的做法-x-  回復(fù)  更多評論
  

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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一区二区三区| 亚洲一区二区四区| 正在播放欧美视频| 亚洲一级在线观看| 亚洲一区三区视频在线观看| 中文日韩欧美| 午夜精品亚洲| 久久久久成人精品| 玖玖精品视频| 欧美激情va永久在线播放| 欧美美女bb生活片| 欧美午夜在线视频| 国产农村妇女毛片精品久久麻豆| 国产欧美日韩免费| 激情综合色丁香一区二区| 亚洲福利视频免费观看| 亚洲看片免费| 亚洲免费视频中文字幕| 欧美在线啊v| 猛男gaygay欧美视频| 亚洲第一狼人社区| 一本色道精品久久一区二区三区| 亚洲午夜电影网| 欧美一区二区三区四区夜夜大片| 久久综合九色欧美综合狠狠| 欧美精品激情在线观看| 国产精品扒开腿爽爽爽视频| 国产一区二区三区久久悠悠色av| 亚洲黄色毛片| 亚洲综合第一页| 久久伊人一区二区| 亚洲精品乱码久久久久久黑人 | 尤物99国产成人精品视频| 在线精品视频一区二区| 一区二区三区视频在线| 欧美亚洲一区三区| 欧美va亚洲va国产综合| 日韩小视频在线观看专区| 新67194成人永久网站| 欧美ab在线视频| 国产欧美日韩精品专区| 亚洲精品国产精品久久清纯直播| 亚洲欧美日韩精品久久亚洲区| 久久躁日日躁aaaaxxxx| 99国产精品视频免费观看| 久久大逼视频| 国产精品yjizz| 在线精品视频一区二区| 午夜精品福利一区二区蜜股av| 麻豆国产精品777777在线| 一区二区免费在线播放| 久久久久久久97| 国产精品裸体一区二区三区| 精品福利电影| 午夜精品久久久久久久| 欧美成人综合网站| 欧美在线观看网站| 欧美午夜电影网| 亚洲人成在线播放| 久久精品国产一区二区三区免费看| 亚洲国产精品999| 欧美资源在线| 国产精品久久久久久久7电影| 18成人免费观看视频| 欧美在线地址| 99国产精品久久| 欧美成人亚洲成人| 在线看片日韩| 久久精品毛片| 亚洲一区精品视频| 欧美日韩福利| 亚洲激情黄色| 欧美va天堂| 久久精品国产欧美亚洲人人爽| 国产精品嫩草影院av蜜臀| 99精品黄色片免费大全| 女仆av观看一区| 欧美中文在线视频| 国产色视频一区| 性色av一区二区三区| 夜夜嗨av色一区二区不卡| 欧美国产综合| 亚洲精品国久久99热| 欧美成人精品一区| 久久久久久伊人| 国语自产偷拍精品视频偷| 午夜精品一区二区三区电影天堂 | 亚洲欧美日韩精品在线| 99精品欧美| 欧美日韩另类丝袜其他| 亚洲剧情一区二区| 欧美国产日韩一区二区| 久久久夜夜夜| 在线观看亚洲视频啊啊啊啊| 久久久久久综合| 欧美一级在线亚洲天堂| 国产免费观看久久| 久久成人18免费观看| 亚洲色在线视频| 国产精品美女一区二区| 午夜精品福利电影| 欧美一级大片在线观看| 国产一区久久久| 久久亚洲综合| 久热精品视频| 亚洲精品欧美一区二区三区| 亚洲黄网站黄| 欧美视频二区| 亚洲欧美日韩中文播放| 午夜精品久久久久| 国产在线视频欧美| 欧美成人精品不卡视频在线观看| 老司机成人在线视频| 亚洲精品久久视频| 一本久久a久久免费精品不卡| 国产精品黄视频| 久久精品在这里| 浪潮色综合久久天堂| 亚洲另类在线一区| 亚洲午夜在线| 韩国女主播一区二区三区| 欧美成人综合在线| 欧美日韩国产色综合一二三四| 亚洲与欧洲av电影| 欧美中文在线视频| 亚洲人成77777在线观看网| 日韩亚洲欧美综合| 国产一区二区久久久| 欧美成人国产| 欧美日韩在线一区| 欧美在线免费一级片| 久久久久国产精品一区三寸| 亚洲区第一页| 亚洲免费在线精品一区| 在线播放亚洲| 亚洲美女诱惑| 国产最新精品精品你懂的| 欧美激情bt| 国产精品免费观看在线| 麻豆精品传媒视频| 欧美日韩精品在线播放| 久久激情久久| 欧美顶级大胆免费视频| 午夜一级久久| 久久综合一区二区三区| 亚洲欧美另类在线观看| 久久免费视频这里只有精品| 一区二区三区视频在线| 久久精品网址| 亚洲尤物视频在线| 女人色偷偷aa久久天堂| 亚洲制服av| 免费亚洲视频| 欧美在线亚洲一区| 欧美精品亚洲一区二区在线播放| 欧美中文字幕在线视频| 欧美二区乱c少妇| 久久av在线看| 欧美日韩你懂的| 欧美成人综合一区| 国产欧美精品| 日韩亚洲一区在线播放| 亚洲国产小视频在线观看| 亚洲欧美一区二区精品久久久| 日韩午夜av电影| 久久精品二区亚洲w码| 亚洲一区欧美| 欧美国产日韩一区二区三区| 久久久久国产精品人| 国产精品xvideos88| 亚洲国产日韩一级| 在线国产精品一区| 性欧美xxxx视频在线观看| 99国产精品一区| 模特精品裸拍一区| 猛干欧美女孩| 国产一区激情| 午夜精品久久久久99热蜜桃导演| 在线视频亚洲欧美| 欧美成人蜜桃| 欧美成人亚洲成人| 黄色在线一区| 欧美一区二区三区四区夜夜大片| 午夜精品福利视频| 国产精品国产三级国产 | 亚洲国产小视频| 久久久久高清| 久久麻豆一区二区| 国产在线精品二区| 亚洲在线日韩| 欧美一区二区精品久久911| 国产精品xxx在线观看www| 亚洲乱码国产乱码精品精| 亚洲伦伦在线| 欧美黄色成人网| 亚洲欧洲一区二区天堂久久| 亚洲国产精品一区| 免费不卡在线视频| 欧美激情精品久久久六区热门 |