當(dāng)前位置:
首頁 >
linux memalign、valloc函数
發(fā)布時(shí)間:2025/3/15
34
豆豆
生活随笔
收集整理的這篇文章主要介紹了
linux memalign、valloc函数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
? ? 在GNU系統(tǒng)中,malloc或realloc返回的內(nèi)存塊地址都是8的倍數(shù)(如果是64位系統(tǒng),則為16的倍數(shù))。如果你需要更大的粒度,請使用
memalign
或valloc。這些函數(shù)在頭文件“stdlib.h”中聲明。
????在GNU庫中,可以使用函數(shù)free釋放 memalign 和valloc返回的內(nèi)存塊。但無法在BSD系統(tǒng)中使用,而且BSD系統(tǒng)中并未提供釋放這樣的內(nèi)存塊的途徑。
????函數(shù):void?*? memalign ?(size_t?boundary,?size_t?size)?
????函數(shù) memalign 將分配一個由size指定大小,地址是boundary的倍數(shù)的內(nèi)存塊。參數(shù)boundary必須是2的冪!函數(shù) memalign 可以分配較大的內(nèi)存塊,并且可以為返回的地址指定粒度。
????函數(shù):void?*?valloc?(size_t?size)?
????使用函數(shù)valloc與使用函數(shù) memalign 類似,函數(shù)valloc的內(nèi)部實(shí)現(xiàn)里,使用頁的大小作為對齊長度,使用memalign來分配內(nèi)存。它的實(shí)現(xiàn)如下所示:?
????void?*
????valloc?(size_t?size)
????{
??????return? memalign ?(getpagesize?(),?size);
????}
????在GNU庫中,可以使用函數(shù)free釋放 memalign 和valloc返回的內(nèi)存塊。但無法在BSD系統(tǒng)中使用,而且BSD系統(tǒng)中并未提供釋放這樣的內(nèi)存塊的途徑。
????函數(shù):void?*? memalign ?(size_t?boundary,?size_t?size)?
????函數(shù) memalign 將分配一個由size指定大小,地址是boundary的倍數(shù)的內(nèi)存塊。參數(shù)boundary必須是2的冪!函數(shù) memalign 可以分配較大的內(nèi)存塊,并且可以為返回的地址指定粒度。
????函數(shù):void?*?valloc?(size_t?size)?
????使用函數(shù)valloc與使用函數(shù) memalign 類似,函數(shù)valloc的內(nèi)部實(shí)現(xiàn)里,使用頁的大小作為對齊長度,使用memalign來分配內(nèi)存。它的實(shí)現(xiàn)如下所示:?
????void?*
????valloc?(size_t?size)
????{
??????return? memalign ?(getpagesize?(),?size);
????}
總結(jié)
以上是生活随笔為你收集整理的linux memalign、valloc函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何用原型体现你的专业度?
- 下一篇: linux编程:getenv,puten