CBaseAllocator.Alloc 方法

该方法 Alloc 为缓冲区分配内存。

语法

virtual HRESULT Alloc();

参数

此方法没有任何参数。

返回值

返回以下 HRESULT 值之一。

返回代码 说明
S_FALSE
缓冲区要求没有更改。
S_OK
缓冲区要求已更改。
VFW_E_SIZENOTSET
未设置缓冲区要求。

注解

此方法由 CBaseAllocator::Commit 方法调用。

在基类中,此方法不分配任何内存。 如果未设置缓冲区要求,则返回错误,S_FALSE如果要求尚未更改,并且如果要求已更改,S_OK。

派生类应重写此方法以执行实际的内存分配。 通常,派生类将执行以下步骤:

  1. 调用基类实现,以确定内存是否真正需要分配。
  2. 分配内存。
  3. 创建包含步骤 2 中内存区块的 CMediaSample 对象。
  4. 将每个 CMediaSample 对象添加到免费示例列表, (CBaseAllocator::m_lFree) 。

有关示例,请参阅 CMemAllocator::Alloc

要求

要求 Value
标头
Amfilter.h (包括 Streams.h)

Strmbase.lib (零售版) ;
Strmbasd.lib (调试生成)

另请参阅

CBaseAllocator 类