第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么C++局部數(shù)組變量地址間隔是16字節(jié)的倍數(shù)?

為什么C++局部數(shù)組變量地址間隔是16字節(jié)的倍數(shù)?

C++
白板的微信 2018-07-25 10:14:12
Linux環(huán)境下,使用g++編譯,發(fā)現(xiàn)C++局部數(shù)組變量地址間隔是16字節(jié)的倍數(shù),為什么呢?有什么辦法可以控制間隔的大小。char str1[] = "abcd"; char str2[2]; printf("address_str1= %p\n",str1); printf("address_str2= %p\n",str2);結(jié)果是:address_str1= 0x7ffff0554e20address_str2= 0x7ffff0554e10
查看完整描述

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)存碎片。

查看完整回答
反對 回復(fù) 2018-07-27
?
繁星點(diǎn)點(diǎn)滴滴

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位的。


查看完整回答
反對 回復(fù) 2018-07-27
  • 2 回答
  • 0 關(guān)注
  • 1117 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號