---
title: kupl_malloc
description: "使用特定分配策略分配内存，并尽可能地锁住申请的内存。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/KunpengHPCKit_developer_066.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/KunpengHPCKit_developer_066.html
indexId: fccc7465d08784d28bacfe4233e75d62c5de098eacdf5a85582dd9a3e3f9a3bf67
---
# kupl_malloc

使用特定分配策略分配内存，并尽可能地锁住申请的内存。

#### 接口定义

void* kupl_malloc(kupl_mem_kind_t kind, size_t size);


#### 参数


**表1 参数定义**

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| kind | kupl\_mem\_kind\_t | 需要使用的内存分配策略 | 输入 |
| size | size\_t | 需要申请的内存大小 | 输入 |


**表2 kupl_mem_kind_t的枚举数据结构定义**

| 枚举值 | 描述 |
| --- | --- |
| KUPL\_MEM\_DEFAULT | 使用系统默认的分配策略分配内存 |
| KUPL\_MEM\_LARGE\_CAP | 从最近的高容量内存节点上申请内存，如果分配失败，则分配返回nullptr并报错 |
| KUPL\_MEM\_HIGH\_BW | 从最近的高带宽内存节点上申请内存，如果分配失败，则分配返回nullptr并报错 |


#### 返回值

- 成功：返回申请得到的内存的指针
- 失败：返回nullptr


#### 示例

```
#include <stdio.h> 
#include <stdlib.h>
#include "kupl.h" 

int main() 
{ 
    int len = 1024; 
    char *data = (char *)kupl_malloc(KUPL_MEM_DEFAULT, len);
    if (data == nullptr) {
        return 0;
    }
    kupl_free(KUPL_MEM_DEFAULT, data); 
    return 0; 
}
```

- 上述示例演示了申请锁住的内存并释放该内存的流程。
- 上述kupl_malloc函数申请大小为len的内存空间并尽可能锁住，使用的内存分配策略为系统默认的分配策略。
- kupl_malloc函数会在条件允许的情况下锁住申请的内存；其中环境中包含SDMA设备是锁住申请的内存的必要条件。
