哪里學(xué)網(wǎng)站建設(shè)與管理太原做網(wǎng)絡(luò)推廣的公司
c99中,結(jié)構(gòu)中最后一個(gè)元素允許是未知大小的數(shù)組,這就叫柔性數(shù)組成員。
柔性數(shù)組的特點(diǎn)
1.結(jié)構(gòu)中柔性數(shù)組前必須至少有一個(gè)其他成員
2.sizeof返回的這種結(jié)構(gòu)大小不包括柔性數(shù)組的內(nèi)存
3.包含柔性數(shù)組成員的結(jié)構(gòu)用malloc函數(shù)進(jìn)行動(dòng)態(tài)分配,并且分配的內(nèi)存應(yīng)該大于結(jié)構(gòu)的大小,以適應(yīng)柔性數(shù)組的預(yù)期大小
4.柔性數(shù)組在結(jié)構(gòu)體中只能存在一個(gè)
下面我們來(lái)介紹兩種使用柔性數(shù)組的方法
法1
?
接下來(lái)是法2
?
?
?
法1的好處
1.如果我們的代碼是在一個(gè)給別人用的函數(shù)中,你在里面做了二次內(nèi)存分配?,并把整個(gè)結(jié)構(gòu)返回給用戶(hù),用戶(hù)調(diào)用free可以釋放結(jié)構(gòu)體,但是用戶(hù)并不知道這個(gè)結(jié)構(gòu)體內(nèi)的成員也需要free,所以你不能指望用戶(hù)來(lái)發(fā)現(xiàn)這個(gè)事。所以,如果我們把結(jié)構(gòu)體的內(nèi)存以及其成員要的內(nèi)存一次性分配好,并返回給用戶(hù)一個(gè)結(jié)構(gòu)體指針,用戶(hù)做一次free就可以把所有也給釋放掉。
2.這樣有利于提高訪(fǎng)問(wèn)速度
連續(xù)的內(nèi)存有益于提高訪(fǎng)問(wèn)速度,也有益于減少內(nèi)存碎片。(其實(shí),我個(gè)人覺(jué)得也沒(méi)多高,反正你跑不了要用偏移量的加法來(lái)尋址)。
那么今天分享就到這里,謝謝大家!!!
?