管理 ADRLIST 和 SRowSet 结构的内存”

适用于:Outlook 2013 | Outlook 2016

使用地址列表或 ADRLIST 以及行集或 SRowSet 结构时,如果尽可能使用单个 MAPIAllocateBuffer 调用为缓冲区分配所有内存的要求不适用。

这两个结构是用于分配和释放内存的标准规则的例外。 它们包含多个级别的结构,旨在允许添加或删除单个成员。 因此,每个属性必须是单独的分配。

如果大多数结构都通过对 MAPIFreeBuffer 的一次调用释放,则 ADRLISTSRowSet 结构中的每个单独条目都必须通过对 MAPIFreeBuffer 的调用或对 FreeProwsFreePadrlist 的单个调用来释放。 有关详细信息,请参阅 MAPIFreeBufferADRLISTSRowSet

FreeProwsFreePadrlist 是 MAPI 提供的用于简化释放这些数据结构的函数。 有关详细信息,请参阅 FreeProwsFreePadrlistFreePadrlist 释放 ADRLIST 结构的内存以及结构成员的所有相关内存; FreeProwsSRowSet 结构执行相同的工作。

下图显示了 ADRLIST 数据结构的布局,指示所需的单独内存分配。 灰色框显示可通过一次调用分配和释放的内存。

ADRLIST 内存分配

ADRLIST 内存分配

另请参阅