2 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
應(yīng)該有以下幾個(gè)目的
一個(gè)是防止偶然性的數(shù)組越界造成的損害,因?yàn)榇蟛糠值臄?shù)組越界發(fā)生在數(shù)組之后1、2個(gè)下標(biāo)的地方。將將好分配內(nèi)存,會(huì)導(dǎo)致出錯(cuò)概率增大很多。
一個(gè)是提高性能,提高性能有兩個(gè),一個(gè)是字節(jié)對齊,可以提高內(nèi)存訪問的效率。對于雙通道內(nèi)存來說,它一次性可以訪問128b/256b的內(nèi)存,也就是16/32字節(jié),那么如果數(shù)據(jù)不對齊,就需要額外的時(shí)鐘周期訪問,就很低效。
還有就是減少重新分配內(nèi)存導(dǎo)致的內(nèi)存碎片。

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
這個(gè)在計(jì)算機(jī)組成原理里面叫地址對齊,地址是16字節(jié)的,那么16字節(jié)的倍數(shù)的對齊就方便了計(jì)算機(jī)去尋址。
而且你不能固話的理解他是16字節(jié)的倍數(shù),地址的分配是編譯器行為。
address_str1= 0x7ffcdede0a2b
address_str2= 0x7ffcdede0a29
實(shí)際上指針代表的是尋地址,指針長度實(shí)際上和最大的尋址長度是有關(guān)系的,32位機(jī)的最大尋址長度為4Byte,所以實(shí)際上sizeof(p)就是指針p的地址,那肯定是4呀!但是8位單片機(jī),16位單片機(jī)和64位單片機(jī)就不一樣了,如果8位的單片機(jī)用8位的編譯器編譯,sizeof(p)必是1。我們有時(shí)候發(fā)現(xiàn)為啥我們用64位的電腦編譯,發(fā)現(xiàn)sizeof(p)=4呢,因?yàn)槲覀冇玫木幾g器是32位的。
- 2 回答
- 0 關(guān)注
- 1117 瀏覽
添加回答
舉報(bào)