当前位置: C语言 -- 标准库 -- <stdlib.h> -- aligned_alloc

aligned_alloc函数


概要:
#include <stdlib.h>
void *aligned_alloc(size_t alignment, size_t size);

描述:

该函数给对象分配内存,其对齐方式由参数alignment指定,大小由参数size指定,其值是不确定的。参数alignment值应是实现支持的有效对齐值;否则函数调用失败,返回空指针。

分配内存的生存期从内存分配开始到内存释放结束。

如果内存被成功分配,函数返回一个指向分配内存开始位置(即最低字节地址。)的指针。如果内存不能被分配,函数返回一个空指针。

如果请求的内存大小为0,函数行为将由实现定义:函数可能返回空指针表示错误;函数也可能像非0值一样返回指针,但返回的指针不能用于访问对象。

调用free函数或者realloc函数将释放全部或者部分分配内存。


参数:
size_t alignment

该参数指定对齐方式。

size_t size

该参数指定大小。


返回值:

如果调用成功,函数返回一个指向分配内存的指针;如果失败,函数返回一个空指针。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
/*函数aligned_alloc范例*/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int *ptrOne = NULL;
    int *ptrTwo = NULL;

    if(!(ptrOne = malloc(5*1024)))
    {
        puts("Error: memory allocation failed.");
        exit(EXIT_FAILURE);
    }
    printf("Address allocated by malloc function:        %p\n", ptrOne);
    
    free(ptrOne);

    if(!(ptrTwo = aligned_alloc(1024, 5*1024)))
    {
        puts("Error: memory allocation failed.");
        exit(EXIT_FAILURE);
    }
    printf("Address allocated by aligned_alloc function: %p\n", ptrTwo);
    
    free(ptrTwo);
    
    return 0;
}


输出:

Address allocated by malloc function:        00000000004420f8

Address allocated by aligned_alloc function: 0000000000442400

注:使用Pelles C编译。


相关内容:
calloc 给数组分配内存并将所有位都初始化为0的函数。
free 释放内存的函数。
malloc 分配指定大小内存的函数。
realloc 重新分配内存的函数。