管理 ADRLIST 和 SRowSet 结构的内存”
适用于:Outlook 2013 | Outlook 2016
使用地址列表或 ADRLIST 以及行集或 SRowSet 结构时,如果尽可能使用单个 MAPIAllocateBuffer 调用为缓冲区分配所有内存的要求不适用。
这两个结构是用于分配和释放内存的标准规则的例外。 它们包含多个级别的结构,旨在允许添加或删除单个成员。 因此,每个属性必须是单独的分配。
如果大多数结构都通过对 MAPIFreeBuffer 的一次调用释放,则 ADRLIST 或 SRowSet 结构中的每个单独条目都必须通过对 MAPIFreeBuffer 的调用或对 FreeProws 或 FreePadrlist 的单个调用来释放。 有关详细信息,请参阅 MAPIFreeBuffer、 ADRLIST 和 SRowSet。
FreeProws 和 FreePadrlist 是 MAPI 提供的用于简化释放这些数据结构的函数。 有关详细信息,请参阅 FreeProws 和 FreePadrlist。 FreePadrlist 释放 ADRLIST 结构的内存以及结构成员的所有相关内存; FreeProws 对 SRowSet 结构执行相同的工作。
下图显示了 ADRLIST 数据结构的布局,指示所需的单独内存分配。 灰色框显示可通过一次调用分配和释放的内存。
ADRLIST 内存分配