成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

c語言結構體對齊規(guī)則 結構體成員的字節(jié)對齊?

結構體成員的字節(jié)對齊???個問題都很有深度??;首先我要說的是,字節(jié)對齊在不同編譯器下語法是不一樣的,在GCC中是#pragmapush(1)#pragmapack()在MSC 中用VC的代碼項里可以

結構體成員的字節(jié)對齊?

??個問題都很有深度??;首先我要說的是,字節(jié)對齊在不同編譯器下語法是不一樣的,在GCC中是#pragmapush(1)#pragmapack()在MSC 中用VC的代碼項里可以調整,默認是8字節(jié);typedefstruct{charcinti}test字節(jié)對齊,是對齊,比如說char與int如果是4字節(jié)對齊,那么char也會占用4個字節(jié),總共占8字節(jié),而且結構體對象存儲是按照順序存的,char肯定在int前面。第二種情況如果1字節(jié)對齊,意味著char只占1字節(jié),而結下來int會占用4字節(jié),這個N字節(jié)對齊的意思是,每個成員占用空間必須是N字節(jié)的倍數,不足N字節(jié)的占用N字節(jié)。那么以1字節(jié)對齊那它占用5個字節(jié)。還有你說的每種數據是低位還是高位在前,這個根處理器有關,Intel處理是小端對齊,比如說一個整數522387969用16進制表示是:0x1f230201,在Intel處理器中表示是0x0102231f,所以在內存用0x0102031f來示522387969,這就是所謂有小端對齊;但在arm處理器中522387969表示是0x1f230201,這就是所謂的大端對齊,這種方式又叫作網絡字節(jié)序。當然前面說的字節(jié)序只是對intlongshort這些內置(builtin)數據類型用效,對結構體內如果有intlong這類成員也會有所謂的字節(jié)序,如前面所說,不管是什么序結構體對象存儲是按照順序存,先定義的成員肯定在后定義的成員前面,但單個成員有字節(jié)序,不知這樣說,你的明白?不是,請仔細體會這句話:這個N字節(jié)對齊的意思是,每個成員占用空間必須是N字節(jié)的倍數,不足N字節(jié)的占用N字節(jié)。大于N字節(jié)就湊夠N字節(jié)的倍數,比如按3字節(jié)對齊,那么一個4字節(jié)的int將占據6字節(jié)~