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

大龍的博客

常用鏈接

統(tǒng)計

最新評論

C++中結(jié)構(gòu)體的字節(jié)對齊問題 ---- 轉(zhuǎn)

 

  前不久,在C++程序中碰到一個有關(guān)結(jié)構(gòu)體字節(jié)對齊的問題。

一。問題描述

在程序中,定義了一個結(jié)構(gòu)體,如下:
typedef struct
{
   char name[33];
   int ID;
   int  age;
} PERSON;

聲明了一個該結(jié)構(gòu)體的數(shù)組:
PERSON peo[30];

當從結(jié)構(gòu)體中取出ID字段給一個int類型的局部變量賦值時,卻出現(xiàn)異常.
比如結(jié)構(gòu)體中的字段都已經(jīng)有初始值
peo[0].ID =4;

下面的賦值語句
int tempID = peo[0].ID;
卻不能正確得到數(shù)值4,tempID得到的是67108864.
經(jīng)檢查67108864是4在高位時的數(shù)值大小.
賦值時本來應(yīng)該是取內(nèi)存中的四個Bytes:"04 00 00 00"
可是取值時卻是用"00 00 00 04" 的方式.
在調(diào)試過程中,從peo[0].ID取值是正確的,得到數(shù)字4,可程序執(zhí)行上面賦值語句后:
tempID還是得到的是67108864.

也就是說,在調(diào)試器中取值是正確的,匯編后的程序取值卻是不正確的.
程序在開始用了的很長一段時間并沒有出現(xiàn)這種問題,這個問題是最近才發(fā)生的.
真是百思不得其解。還有一點是明確的,程序涉及到網(wǎng)絡(luò)傳輸。

可是如果把結(jié)構(gòu)體中的字符數(shù)組大小由33改為36,一切正常了!

原理上肯定是結(jié)構(gòu)體的位對齊問題,但為什么以前編譯使用沒出問題,現(xiàn)在編譯才發(fā)生呢?
應(yīng)該怎么解決呢?

二。尋找問題的原因。

經(jīng)過CSDN社區(qū)各位老大的幫助,并且自己仔細去了解程序中的編譯條件部分,原則上理解了這問題的本質(zhì)所在。

發(fā)現(xiàn)在網(wǎng)絡(luò)模塊中使用到了"#pram pack(1)"這樣的編譯條件,而其它模塊則沒有加入這種編譯條件。

而CSDN中其中一個大蝦是這樣解釋的:“對齊方式是給編譯器看的,編譯器根據(jù)這個來決定內(nèi)存布局。一旦編譯成二進制文件內(nèi)存布局就已經(jīng)確定了,如果兩段代碼對同一個結(jié)構(gòu)使用的對齊方式不同,那么就會對內(nèi)存里的值做出了不同的解釋,賦值的一方認為char[33]占了36個字節(jié),從第37個字節(jié)填寫04 00 00 00,可是讀取的一方認為char[33]只有33個字節(jié),那就從第34個字節(jié)處取四個字節(jié)當作ID。”

這次網(wǎng)友的解釋,我認為指出了問題的本質(zhì)所在:“如果兩段代碼對同一個結(jié)構(gòu)使用的對齊方式不同,那么就會對內(nèi)存里的值做出了不同的解釋”。我們的程序給結(jié)構(gòu)體初始化部分是按VC編譯器中默認的結(jié)構(gòu)體8字節(jié)對齊,而在網(wǎng)絡(luò)模塊中,由于使用了"#pram pack(1)",結(jié)果從結(jié)構(gòu)體中取值時,編譯器認為結(jié)構(gòu)體是按1字節(jié)對齊,最終導(dǎo)致了問題的產(chǎn)生。

三。解決方法

為了解決這個問題,就需要程序中所有的代碼對同一個結(jié)構(gòu)體都使用同一種對齊即可。

會有兩種解決辦法:
一是把網(wǎng)絡(luò)模塊中的"#pram pack(1)"去掉,結(jié)構(gòu)體都是按VC編譯器中默認的結(jié)構(gòu)體8字節(jié)方式對齊。
二是設(shè)置結(jié)構(gòu)體按1字節(jié)方式進行對齊,程序所有模塊都按這種對齊方式編譯。

設(shè)置在VC的"project"->"setting..."->"c/c++":struct member aligment改成1 Bytes.

posted on 2008-11-05 23:30 大龍 閱讀(1977) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(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>
            美女网站久久| 亚洲精品在线观看免费| 久久人体大胆视频| 亚洲深夜福利在线| 一本色道久久综合精品竹菊| 亚洲人永久免费| 亚洲精品1234| 99国产精品视频免费观看| 在线免费一区三区| 亚洲激情av| 亚洲午夜精品国产| 亚洲一区一卡| 性欧美1819sex性高清| 久久高清福利视频| 久久人人97超碰精品888| 欧美成人福利视频| 亚洲人成亚洲人成在线观看图片| 欧美电影在线观看完整版| 亚洲国内自拍| 亚洲在线一区二区| 久久久久久久网| 欧美精品久久99久久在免费线| 欧美日韩99| 久久这里只有| 欧美日韩视频一区二区| 国产精品美女主播在线观看纯欲| 国产乱码精品一区二区三区五月婷 | 亚洲高清在线| 一本色道综合亚洲| 欧美一区二区国产| 欧美大片专区| 亚洲午夜久久久久久久久电影网| 国产精品theporn| 欧美精品激情blacked18| 香蕉乱码成人久久天堂爱免费| 久久精品综合一区| 欧美日韩欧美一区二区| 国产主播一区二区三区四区| 亚洲精品影院| 久久青青草原一区二区| 99www免费人成精品| 欧美在线视频日韩| 欧美日韩成人免费| 亚洲国产二区| 久久久久久久久伊人| 亚洲日本乱码在线观看| 久久国产精品久久久| 欧美三级日本三级少妇99| 在线高清一区| 久久成人一区二区| 99视频在线精品国自产拍免费观看 | 国产精品一区亚洲| 夜夜嗨av一区二区三区四季av| 久久一本综合频道| 亚洲欧美亚洲| 国产精品卡一卡二卡三| 在线亚洲免费| 亚洲国产视频一区二区| 久久久久综合一区二区三区| 国产伦理一区| 香蕉成人啪国产精品视频综合网| 最新日韩精品| 欧美成人精品影院| 91久久国产综合久久蜜月精品| 久久在精品线影院精品国产| 亚洲午夜一区二区三区| 欧美天天在线| 国产一区美女| 久久免费精品视频| 香港久久久电影| 国产一区二区视频在线观看 | 欧美高清视频在线播放| 亚洲电影网站| 欧美a级理论片| 你懂的视频一区二区| 亚洲区中文字幕| 亚洲人成绝费网站色www| 欧美高清在线视频| 夜夜躁日日躁狠狠久久88av| 亚洲精品视频在线看| 欧美日韩国产黄| 亚洲视频精品在线| 亚洲无毛电影| 激情欧美一区二区| 欧美韩日精品| 欧美日韩一二三区| 国产丝袜一区二区| 国语自产偷拍精品视频偷 | 国产亚洲一区二区精品| 久久久久久91香蕉国产| 久久久久久久成人| 最新国产拍偷乱拍精品 | 欧美一区二区三区日韩| 欧美一区二区免费视频| 亚洲日本成人| 9久re热视频在线精品| 国产午夜精品视频| 999亚洲国产精| 18成人免费观看视频| 一区二区三区欧美成人| 亚洲电影观看| 欧美一级大片在线观看| 亚洲人成在线观看| 午夜精品久久久久久99热软件| 亚洲国产合集| 亚洲欧美日本日韩| 亚洲精品在线观看视频| 小黄鸭视频精品导航| 一区二区三区|亚洲午夜| 久久成人这里只有精品| 亚洲一二三四区| 欧美99久久| 久久青青草综合| 国产精品一区二区欧美| 亚洲激情成人在线| 国内精品免费在线观看| 亚洲一区免费视频| 中文国产成人精品| 欧美大尺度在线| 免费av成人在线| 国产人妖伪娘一区91| 99精品欧美一区二区蜜桃免费| 亚洲承认在线| 亚洲女人av| 亚洲午夜激情| 欧美人妖在线观看| 在线观看日产精品| 一区二区高清在线| 一本久道久久综合中文字幕| 欧美一区二区三区免费在线看| 99视频在线观看一区三区| 欧美一区二粉嫩精品国产一线天| 亚洲综合色视频| 欧美福利视频| 欧美成人官网二区| 国产一区二区三区四区hd| 久久久久亚洲综合| 一区精品在线播放| 午夜欧美精品| 亚洲欧美久久久| 欧美另类69精品久久久久9999| 亚洲精品资源| 亚洲激情一区二区| 久久亚洲精品欧美| 久久久夜夜夜| 久久精品亚洲乱码伦伦中文 | 久久久久国产一区二区| 99热精品在线| 国产日韩在线播放| 亚洲欧洲久久| 亚洲人成在线播放| 裸体素人女欧美日韩| 久久久久久久一区| 国产精品日本| 亚洲在线一区二区| 欧美影片第一页| 国产精品成人aaaaa网站| 亚洲午夜久久久久久久久电影网| 日韩一区二区免费看| 免费久久99精品国产自| 欧美大片va欧美在线播放| 在线日韩一区二区| 欧美一区二视频| 久久人人九九| 亚洲高清电影| 蜜臀久久99精品久久久画质超高清| 亚洲欧美一级二级三级| 韩国欧美一区| 久久乐国产精品| 欧美成人亚洲成人日韩成人| 亚洲高清在线精品| 国产精品初高中精品久久| 亚洲图片你懂的| 亚洲欧美在线免费观看| 国产欧美一区二区精品仙草咪 | 国产精品专区h在线观看| 夜夜爽99久久国产综合精品女不卡| 一区二区三区日韩欧美精品| 欧美日韩在线播放一区| 亚洲伊人网站| 欧美a级大片| 亚洲视频久久| 国产一区欧美日韩| 亚洲午夜羞羞片| 午夜久久资源| 国产欧美一区二区白浆黑人| 老牛影视一区二区三区| 久久综合狠狠| 在线视频欧美日韩| 国产日韩欧美成人| 久热精品视频在线| 免费成人黄色av| 欧美一二三视频| 亚洲高清在线观看一区| 欧美日韩成人在线| 久久精品亚洲精品国产欧美kt∨| 午夜精品区一区二区三| 国产精品一区二区三区乱码| 乱码第一页成人| 亚洲视频www|