HeapAlloc与malloc的区别
malloc是在CRT的內(nèi)存堆上分配的,這個堆的存在一般來說你是不會關(guān)心的
HeapAlloc則不同,你需要給它指定你想從哪個堆上分配,而這個堆是從HeapCreate創(chuàng)建出來的
HeapAlloc大多是用于自己管理堆的情況
malloc可以移植是因為在不同的操作系統(tǒng)上有各自的實現(xiàn),而所有平臺上就叫這個名字。比如在Widnows上,VC中調(diào)用malloc時,其實在malloc內(nèi)部就是通過調(diào)用Windows?API?HeapAlloc在指定的堆上分配內(nèi)存的,而C++?Builder中調(diào)用malloc,其實在malloc內(nèi)部調(diào)用AirtualAlloc,所以不同的編譯器也有不同的實現(xiàn),
但都是以O(shè)S的API為基礎(chǔ)的,所以你的問題的回答其實是調(diào)用與被調(diào)用的關(guān)系.
malloc();?和?HeapAlloc();?都是從堆中分配相應(yīng)的內(nèi)存
不同的是一個是c?run?time的函數(shù)?一個是windows系統(tǒng)的函數(shù)
這么說你應(yīng)該可以想到?對于windows程序來說?使用HeapAlloc();會比malloc();效率稍稍高一些
實際也是這樣的?其實有許多crt的函數(shù)?ms在win中都提供了相似功能的系統(tǒng)函數(shù)
HeapAlloc和malloc的區(qū)別在于他們屬于不同的函數(shù)庫。前者屬于平臺sdk,后者則是標(biāo)準(zhǔn)庫。
兩個函數(shù)在分配空間時都是分配在堆中,實現(xiàn)結(jié)果也有細(xì)微差別。如malloc分配的實際空間可能比你指定的多些
總結(jié)
以上是生活随笔為你收集整理的HeapAlloc与malloc的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络编程释疑之:单台服务器上的并发TCP
- 下一篇: 手把手教你玩转SOCKET模型:完成端口