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