91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

malloc與free

發布時間:2020-06-06 20:12:07 來源:網絡 閱讀:377 作者:lnredone 欄目:系統運維

《UNIX環境高級編程》

在大部分操作系統中,內存分配由以下兩個簡單的函數來處理:
void *malloc (long numbytes):該函數負責分配 numbytes 大小的內存,并返回指向第一個字節的指針。
void free(void *firstbyte):如果給定一個由先前的 malloc 返回的指針,那么該函數會將分配的空間歸還給進程的“空閑空間”。


malloc和free大量使用后回造成內存碎片,那么這種碎片形成的原理是什么? ??
如果機理是申請的內存空間大小(太小)所形成的,那么,申請多大的區域能夠最大限度的避免內存碎片呢?(這里的避免不是絕對的避免,只是一種概率)

?

內存碎片一般是由于空閑的連續空間比要申請的空間小,導致這些小內存塊不能被利用。 ??

產生內存碎片的方法很簡單,舉個例: ??
假設有一塊一共有100個單位的連續空閑內存空間,范圍是0~99。如果你從中申請一塊內存,如10個單位,那么申請出來的內存塊就為0~9區間。這時候你繼續申請一塊內存,比如說5個單位大,第二塊得到的內存塊就應該為10~14區間。 ??
如果你把第一塊內存塊釋放,然后再申請一塊大于10個單位的內存塊,比如說20個單位。因為剛被釋放的內存塊不能滿足新的請求,所以只能從15開始分配出20個單位的內存塊。 ??


現在整個內存空間的狀態是0~9空閑,10~14被占用,15~24被占用,25~99空閑。其中0~9就是一個內存碎片了。如果10~14一直被占用,而以后申請的空間都大于10個單位,那么0~9就永遠用不上了,造成內存浪費。 ??
??
如果你每次申請內存的大小,都比前一次釋放的內村大小要小,那么就申請就總能成功。 ??


有的人喜歡自己編寫內存管理模塊,程序一開始就申請一大塊內存,然后以后申請內存都在這個大內存中取,配合一定的技巧來減少內存碎片問題。


一般按頁為單位,4k ??

malloc ? ,operator ? new ? 這些都有自己的分配策略,只要不是使用系統API,而是用庫,則一般來說不用自己考慮

?

一般情況如果你申請的內存都是比較大,而且比較有規律的話(比如你只申請16k和4k兩種大小的內存)就沒問題。不過這樣的話就要你自己加一個層次來處理這些大內存了。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

靖州| 普定县| 化州市| 湘潭县| 从化市| 安徽省| 东安县| 新余市| 双桥区| 竹山县| 自治县| 蓬莱市| 惠东县| 弥勒县| 元氏县| 延吉市| 鄢陵县| 南充市| 株洲市| 鲁甸县| 弥渡县| 乌什县| 南部县| 西华县| 宁德市| 滦南县| 丹巴县| 葫芦岛市| 通州区| 武定县| 绍兴市| 台南市| 建水县| 卢湾区| 介休市| 正安县| 宣化县| 富民县| 出国| 汾阳市| 济宁市|