首页 > 解决方案 > 通过 CPP+COM 应用程序处理大型 PST 时获取 MAPI_E_NOT_ENOUGH_MEMORY, 0x8007000E

问题描述

我们正在以编程方式处理大型 PST 文件,对电子邮件进行少量更改,然后将其存储回 PST。我们正在为 PST 中的每封邮件都这样做。但是在处理一定数量的电子邮件后(大约 13922-13924),我们开始收到 MAPI_E_NOT_ENOUGH_MEMORY(0x8007000E) 错误,之后我们无法打开 PST 对象/邮件。我们必须停止我们的 exe,然后重新运行它。然后它开始处理来自 PST 的下一个剩余邮件,并在处理下一批围绕邮件的 13922 后再次开始给出相同的错误。当我们开始出错时,我们的进程的内存消耗最大为 130MB。有足够的 RAM(12gb) 和磁盘空间(30gb+) 可用。我们是否错过了发布任何可能与 MAPI 相关但不在内存中的内容,句柄或线程利用率?还请帮助我们了解此类错误背后的原因和可能的解决方案。

提前致谢。

标签: c++outlookexchange-servermapipst

解决方案


这听起来确实像是在泄漏 MAPI 对象引用。很难更准确 - 尝试注释掉大部分代码并一次将其带回几行/方法,直到问题再次出现。


推荐阅读