清空隊(duì)列的時(shí)候
為什么不需要將數(shù)組中的元素賦值為0來清空隊(duì)列中的元素,而僅僅是設(shè)置頭、尾、長(zhǎng)度為0?
如果說清空后再插入隊(duì)列的新值會(huì)覆蓋舊值,那么考慮一種情況,假如一個(gè)隊(duì)列10個(gè)元素,全部填滿,然后按照視頻中的方法清空隊(duì)列,這時(shí)候,再次操作隊(duì)列,只插入5個(gè)元素,那是不是會(huì)出現(xiàn)讀取該隊(duì)列的時(shí)候該隊(duì)列依然是10個(gè)元素的情況呢?(5個(gè)新入隊(duì)的,5個(gè)舊值)
2017-08-22
僅僅將元素賦值為0,0也是一個(gè)int 數(shù)值占據(jù)內(nèi)存空間,并未起到清空隊(duì)列的作用。
清空隊(duì)列的時(shí)候已經(jīng)設(shè)置長(zhǎng)度為零,再次插入數(shù)值的時(shí)候長(zhǎng)度重新從零計(jì)數(shù),插入5個(gè)長(zhǎng)度增到5,不會(huì)出現(xiàn)再次讀取的時(shí)候長(zhǎng)度還是10 的情況
2017-08-22
謝謝你!不過對(duì)于第二個(gè)問題,我的理解是,長(zhǎng)度分為數(shù)組長(zhǎng)度m_length和已經(jīng)入隊(duì)的對(duì)象長(zhǎng)度m_used兩種。事實(shí)上清零是將m_used清零,而m_length依然沒變,所以在我上面假設(shè)的情況下,倘若再讀取m[i],其中5<i<m_length,是會(huì)讀取到以前的舊值的。雖然說實(shí)際情況下i的上限是m_used-1,正常情況下不會(huì)讀取到后面的值,但是這樣清空數(shù)組會(huì)不會(huì)有些問題呢。(因?yàn)橹挡]有被清空,還是存在堆內(nèi)存里面)