1. 程式人生 > >memalign的作用【轉】

memalign的作用【轉】

本文轉載自:https://blog.csdn.net/lvwx369/article/details/41726415

轉自:http://hi.baidu.com/narshben/item/ca95ca1bf43d90466926bbf5

 

ZZ: http://gs5689.blogbus.com/logs/36655475.html 


在GNU系統中,malloc或realloc返回的記憶體塊地址都是8的倍數(如果是64位系統,則為16的倍數)。如果你需要更大的粒度,請使用memalign或valloc。這些函式在標頭檔案“stdlib.h”中宣告。

在GNU庫中,可以使用函式free釋放memalign和valloc返回的記憶體塊。但無法在BSD系統中使用,而且BSD系統中並未提供釋放這樣的記憶體塊的途徑。

函式:void * memalign (size_t boundary, size_t size) 
函式memalign將分配一個由size指定大小,地址是boundary的倍數的記憶體塊。引數boundary必須是2的冪!函式memalign可以分配較大的記憶體塊,並且可以為返回的地址指定粒度。

函式:void * valloc (size_t size) 
使用函式valloc與使用函式memalign類似,函式valloc的內部實現裡,使用頁的大小作為對齊長度,使用memalign來分配記憶體。它的實現如下所示: 
void *
valloc (size_t size)
{
return memalign (getpagesize (), size);
}