日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

内存分配函数分类

發布時間:2025/3/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内存分配函数分类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

4種用于內存分配的API函數。虛擬VIRTUAL函數用于分配和管理大數量的內存,堆函數HEAP用于小數量內存,全局函數GLOBAL及局部函數LOCAL用于小數量內存分配,這兩類函數是為了實現與16位系統兼容而提供的。WIN32 API仍然維護全局以及局部的堆函數,但是它們都是從局部的2GB中分配內存。這些堆對于進程而言都是局部的,不能被其他進程訪問。

?????? 當一個程序需要分配一個至少幾KB緩存時,使用VIRTUALALLOC函數獲得內存塊。它以4KB為單位獲取內存,分配的內存以4KB來對齊。當程序需要為小對象,數組或者結構分配內存時,調用HEAPALLOC函數更合適。將VIRTUALALLOC函數用于對小數據結構的訪問會造成內存資源的浪費。

?????? 每個進程都有一個默認堆,但是為了提高效率和便于管理,程序也可以分配額外的堆。每個堆都有自己的句柄,調用GETPROCESSHEAP函數獲得默認堆的句柄。

?????? 進程中的線程可以訪問進程中的默認堆,WIN32內存管理對堆的訪問是串行的。當一個線程執行一個堆函數時,其他線程對內存的請求就會被掛起直到函數結束。這樣會給程序帶來很小的延遲。如果一個線程需要訪問一些堆并且不想與其他線程分享這個堆,那么為線程分配私有堆PRIVATE HEAP要比使用默認堆快得多。在線程使用私有堆的情況下,可以在堆分配時選擇不對堆進行串行化處理。這樣的話,那些需要其他堆空間的其他線程就不會被延遲。如果需要使用方便或者需要代碼緊湊就應使用默認堆,如果需要速度則應使用線程私有堆。

?????? 動態鏈接庫在默認情況下不擁有自己的堆,它與調用它的進程共享堆,DLL可以分配自己的私有堆并使用它。

?????? 當程序使用完堆以后一定要釋放堆。否則會產生內存泄漏MEMORY LEAK。一個規則就是,誰分配誰釋放。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的内存分配函数分类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。