> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ApuCreateHeap

> ApuCreateHeap

# ApuCreateHeap

创建 APU 堆。

## 语法

```cpp theme={null}
HRESULT ApuCreateHeap(  
         UINT32 cachedSizeInBytes,  
         UINT32 nonCachedSizeInBytes = 0  
)  
```

### 参数

*cachedSizeInBytes*   \_In\_\
类型:UINT32

缓存内存分配的大小,以字节为单位。

*nonCachedSizeInBytes*   \_In\_opt\_\
类型:UINT32

非缓存分配的大小,以字节为单位。如果为 0,则使用大约 1 MB 的默认分配。

### 返回值

类型:HRESULT

除其他错误代码外,此方法还可以返回以下值:

| 返回代码                             | 描述              |
| :------------------------------- | :-------------- |
| S\_OK                            | 成功              |
| E\_INVALIDARG                    | 参数无效(size == 0) |
| E\_OUTOFMEMORY                   | 内存分配失败          |
| APU\_E\_HEAP\_ALREADY\_ALLOCATED | 堆已被分配           |

## 备注

只能创建一个 APU 堆;它在进程的整个生命周期内保持存在。仅当进程终止时,该堆才会被释放。

若要确保按您的特定要求分配堆,请在任何其他 ACP HAL 和 APU 方法之前调用此方法。

如果在调用此方法之前调用了任何 [ACP HAL](/reference/audio/acphal/acphal_members)(AcpHal.h)或 [APU](/reference/audio/apu/apu_members) 方法,则会分配一个 64 MB 的缓存堆和一个大约 1 MB 的非缓存堆;之后再次调用此方法将失败并返回 `APU_E_HEAP_ALREADY_ALLOCATED`。

缓存内存用于所有 Waves 资产以及命令和消息队列。非缓存内存用于 SHAPE 上下文和通知。

## 要求

**头文件:** apu.h

**库:** acphal.lib

**支持的平台:** XBOX One 系列主机和 XBOX Series 主机

## 概念文档

* [ACP 概述](/build/console-features/audio/overviews/acp-overview)

## 另请参阅

[APU](/reference/audio/apu/apu_members)


## Related topics

- [ApuHeapState](/zh-CN/reference/audio/apu/structs/apuheapstate.md)
- [ApuHeapGetState](/zh-CN/reference/audio/apu/functions/apuheapgetstate.md)
- [APU(音频处理单元)](/zh-CN/reference/audio/apu/apu_members.md)
- [ACP 概述](/zh-CN/build/console-features/audio/overviews/acp-overview.md)
- [IAcpHal::SubmitCommand](/zh-CN/reference/audio/acphal/interfaces/IAcpHal/methods/iacphal_submitcommand.md)
