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

大龍的博客

常用鏈接

統計

最新評論

C++中結構體的字節對齊問題 ---- 轉

 

  前不久,在C++程序中碰到一個有關結構體字節對齊的問題。

一。問題描述

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

聲明了一個該結構體的數組:
PERSON peo[30];

當從結構體中取出ID字段給一個int類型的局部變量賦值時,卻出現異常.
比如結構體中的字段都已經有初始值
peo[0].ID =4;

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

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

可是如果把結構體中的字符數組大小由33改為36,一切正常了!

原理上肯定是結構體的位對齊問題,但為什么以前編譯使用沒出問題,現在編譯才發生呢?
應該怎么解決呢?

二。尋找問題的原因。

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

發現在網絡模塊中使用到了"#pram pack(1)"這樣的編譯條件,而其它模塊則沒有加入這種編譯條件。

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

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

三。解決方法

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

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

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

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


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   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>
            久久免费视频这里只有精品| 欧美 日韩 国产 一区| 美女国产精品| 久久久久久一区| 亚洲欧美日韩精品久久奇米色影视| 国产精品普通话对白| 久久国产精品亚洲va麻豆| 亚洲中字黄色| 国产一区二区三区最好精华液| 久久久久国产一区二区| 欧美一区成人| 欧美一区二区高清| 亚洲欧美春色| 久久久久久久一区二区| 精品动漫3d一区二区三区| 国产欧亚日韩视频| 亚洲二区免费| 国产综合18久久久久久| 一区二区亚洲| 亚洲制服av| 欧美福利影院| 在线亚洲高清视频| 久久久久久亚洲精品杨幂换脸| 久久婷婷久久| 国产乱码精品1区2区3区| 国语自产精品视频在线看| 在线精品国产成人综合| 91久久久国产精品| 久久大逼视频| 亚洲激情在线观看| 一本色道久久| 久久免费视频在线观看| 欧美日韩免费| 亚洲三级网站| 欧美高清日韩| 性色av一区二区三区| 欧美精品在线视频| 亚洲三级免费电影| 国产精品99久久久久久宅男| 久久综合网络一区二区| 亚洲欧美国产视频| 国产精品久久77777| 99re66热这里只有精品3直播 | 久久成人精品视频| 久久精品国产99国产精品澳门| 久久精品天堂| 在线看国产一区| 亚洲一本大道在线| 欧美jizz19hd性欧美| 亚洲伊人第一页| 国产精品观看| 亚洲精品日本| 亚洲精品1234| 欧美日韩免费在线观看| 亚洲最新在线视频| 免费在线看一区| 免费在线看成人av| 亚洲精品一二| 日韩视频久久| 国产精品一区免费观看| 欧美影院久久久| 欧美一区二区三区四区在线观看| 国产精品天天摸av网| 欧美亚洲综合在线| 久久久精品午夜少妇| 国内精品久久久久久久影视蜜臀| 亚洲伊人网站| 久久久久久9| 亚洲国产精品专区久久| 日韩视频免费在线观看| 国产欧美精品一区二区色综合| 久久免费少妇高潮久久精品99| 久久精品国产亚洲精品| 国产亚洲欧美激情| 亚洲片国产一区一级在线观看| 欧美午夜美女看片| 亚洲区一区二区三区| 亚洲午夜高清视频| 久久久999| 香蕉亚洲视频| 欧美国产1区2区| 国产曰批免费观看久久久| 亚洲第一在线综合在线| 欧美日韩精品一区二区在线播放| 欧美在线观看视频| 中国成人亚色综合网站| 亚洲激情视频在线观看| 亚洲欧美欧美一区二区三区| 欧美11—12娇小xxxx| 久久亚洲影院| 一区二区在线看| 欧美亚洲一区二区在线| 亚洲欧美日韩一区二区三区在线观看| 久久国产精品99精品国产| 亚洲一区二区三区激情| 亚洲色图综合久久| 国产精品国产自产拍高清av| 亚洲最新视频在线| 久久亚洲捆绑美女| 亚洲激情网站免费观看| 欧美日韩在线播放| 欧美一级片一区| 欧美国产亚洲精品久久久8v| 国产精品老牛| 亚洲最新视频在线| 久久精品官网| 亚洲天堂av图片| 国产欧美午夜| 久久综合给合久久狠狠色| 一区二区三区.www| 欧美xx视频| 宅男66日本亚洲欧美视频| 亚洲精品一级| 久久久美女艺术照精彩视频福利播放| 欧美日韩国产不卡在线看| 国产性天天综合网| 亚洲清纯自拍| 国产欧美一二三区| 久久久久综合一区二区三区| 亚洲精品激情| 欧美综合国产| 亚洲第一天堂av| 欧美在线一二三区| 午夜天堂精品久久久久| 久久gogo国模裸体人体| 亚洲一区在线视频| 一区二区免费在线播放| 亚洲国产高清自拍| 久热精品视频| 亚洲一区二区av电影| 欧美日韩情趣电影| 欧美高清在线观看| 亚洲精品一区在线观看| 久久蜜臀精品av| 午夜久久一区| 性久久久久久久久| 亚洲午夜精品| 亚洲精品视频免费观看| 国产欧美日韩视频| 欧美日韩精品久久| 国产精品久久9| 亚洲一区二区免费看| 91久久精品美女高潮| 久久久www免费人成黑人精品 | 美腿丝袜亚洲色图| 一本久久知道综合久久| 亚洲网址在线| 久久青青草综合| 蜜臀av在线播放一区二区三区| 一本久久综合亚洲鲁鲁五月天| 国产亚洲午夜| 国内外成人在线视频| 国产亚洲精品久久久| 亚洲一区二区三区四区在线观看| 久久激情一区| 欧美伊人久久久久久久久影院| 久久全球大尺度高清视频| 欧美www在线| 亚洲女性喷水在线观看一区| 欧美激情中文不卡| 欧美国产日韩一区二区三区| 亚洲第一区色| 一区二区激情| 亚洲精品久久久久久久久久久久| 欧美一区二区三区喷汁尤物| 亚洲综合欧美日韩| 国产精品国产三级国产aⅴ无密码| 一区二区三区日韩欧美| 亚洲一区黄色| 国产精品视频网址| 欧美国产一区二区三区激情无套| 国产日韩欧美| 亚洲第一在线综合在线| 欧美一区二区在线免费播放| ●精品国产综合乱码久久久久| 中文在线资源观看网站视频免费不卡| 欧美精品综合| 亚洲一区二区在线播放| 亚洲电影在线播放| 亚洲精品一二三区| 欧美午夜不卡在线观看免费| 国模大胆一区二区三区| 欧美一区二区三区免费看| 欧美国产欧美综合 | 久久久亚洲国产天美传媒修理工 | 一区在线免费| 欧美v国产在线一区二区三区| 一区二区三区视频观看| 亚洲视频在线观看| 亚洲国产成人精品久久| 国产香蕉97碰碰久久人人| 国产精品久久久一区麻豆最新章节| 欧美高清在线视频观看不卡| 老司机免费视频久久| 久久国产精品久久久久久| 欧美成人在线免费视频| 理论片一区二区在线| 久久综合九九| 久久一区精品| 老色鬼精品视频在线观看播放|