2018-01-06 C++ 指針的強制轉換

指針強制轉換僅僅是將地址后的內容按照不同的類型進行變量解釋和讀取埂蕊。(但是如果強制轉換的指針所指向數(shù)據(jù)的字節(jié)數(shù)不一樣实夹,會存在數(shù)據(jù)錯誤。比如:一個指向char型數(shù)據(jù)的指針p粒梦,p指向的內容只有一個字節(jié)亮航,*p是將地址后面的一個字節(jié)的內容按照char進行解讀取匀们;但是如果將其強制轉換成int型指針*pn缴淋,*pn將地址后面的四個字節(jié)的內容按照int進行解讀取,這樣就會多讀了后面的內存泄朴,出現(xiàn)錯誤重抖。


結構體的大小計算和內存對齊


結構體的成員占用不同的存儲空間,當計算結構體占用內存空間時祖灰,并不是簡單的相加钟沛。


偏移量: 結構體變量成員地址和結構體變量地址的差

結構體大小等于最后一個成員的偏移量 加上最后一個成員的大小


實際上,偏移量會被調整局扶,調整規(guī)則如下:

1. 偏移量必須是當前成員大小的整數(shù)倍

2.結構體大小是所有成員大小的整數(shù)倍(各項)


例子 struct a {

int? i, ? ? ?? // 偏移量為 0

char c; ? ? ? ?? // c 的偏移量為4?

int? j}; ? ? ? ? ?? //j 的偏移量為 5 需要調整到 8 才成為 size(j)的整數(shù)倍


size(a) = 4 +1 + 4+3 = 12? 滿足規(guī)則2


例子:

struct st_task{

uint16_t id;

unint32_t value;

uint64_t timestamp;

};

uint64_t a = 0x 00 00 00 00 00? 01 00 01;

memcpy(&task,&a,size0f(uint64_t)


a 在內存的存儲有兩種形態(tài):

1. 大端模式恨统, 低地址高字節(jié)

00 00 00 00 00 01 00 01? 從左到右低地址到高地址

2.小段模式 低地址低字節(jié)

10 00 10 00 00 00 00 00?


st_task 的大小分析

struct st_task{

uint16_t id; ? // 0

unint32_t value; // 2? 但是成員大小為4 , 因此要補充成4偏移量三妈。

uint64_t timestamp; // 4 + size(uint32_t) =8? 偏移量畜埋, 不用修改。

};


8+ 8 = 16 滿足規(guī)則2


在小端模式下畴蒲, id 被賦值為 1000 value 被賦值為 00 00 00 00 ( 10 00? 被跳過了)悠鞍,( 16 - )timestamp 沒被賦值默認為 0 , 使用小端模式存儲的字節(jié)轉換為實際值后模燥,id 變?yōu)?0x0001

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末咖祭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蔫骂,更是在濱河造成了極大的恐慌么翰,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纠吴,死亡現(xiàn)場離奇詭異硬鞍,居然都是意外死亡,警方通過查閱死者的電腦和手機戴已,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門固该,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人糖儡,你說我怎么就攤上這事伐坏。” “怎么了握联?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵桦沉,是天一觀的道長每瞒。 經(jīng)常有香客問我,道長纯露,這世上最難降的妖魔是什么剿骨? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮埠褪,結果婚禮上浓利,老公的妹妹穿的比我還像新娘。我一直安慰自己钞速,他們只是感情好贷掖,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渴语,像睡著了一般苹威。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上驾凶,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天牙甫,我揣著相機與錄音,去河邊找鬼狭郑。 笑死腹暖,一個胖子當著我的面吹牛,可吹牛的內容都是我干的翰萨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼糕殉,長吁一口氣:“原來是場噩夢啊……” “哼亩鬼!你這毒婦竟也來了?” 一聲冷哼從身側響起阿蝶,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤雳锋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后羡洁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體玷过,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡本谜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年百炬,在試婚紗的時候發(fā)現(xiàn)自己被綠了旧烧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壕曼。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡志笼,死狀恐怖益咬,靈堂內的尸體忽然破棺而出戳护,到底是詐尸還是另有隱情嚎货,我是刑警寧澤秸应,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布虑凛,位于F島的核電站碑宴,受9級特大地震影響,放射性物質發(fā)生泄漏桑谍。R本人自食惡果不足惜延柠,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锣披。 院中可真熱鬧贞间,春花似錦、人聲如沸盈罐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盅粪。三九已至钓葫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間票顾,已是汗流浹背础浮。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奠骄,地道東北人豆同。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像含鳞,于是被迫代替她去往敵國和親影锈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內容