c++ - 通过 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 相关但不在内存中的内容,句柄或线程利用率?还请帮助我们了解此类错误背后的原因和可能的解决方案。
提前致谢。
解决方案
这听起来确实像是在泄漏 MAPI 对象引用。很难更准确 - 尝试注释掉大部分代码并一次将其带回几行/方法,直到问题再次出现。
推荐阅读
- c# - GridView UWP 高度问题中的 GridView
- arrays - 将数组压缩到小于 45000 字节
- python - Python Tkinter 用相同的文本销毁所选按钮旁边的所有按钮
- vb.net - 如何从 VB.NET 中的 2 个文本文件中读取特定行
- keras - MobileNetV2 的 Keras 和 TensorFlow Hub 版本的区别
- javascript - JQuery POST 到 wordpress PHP 插件执行
- angular - 如何将搜索栏放在 SplitButton 列表中
- java - java中观察者设计中的一个复杂问题的设计解决方案
- javascript - 如何使用 React 创建带有输入值的卡片列表?
- python - Python代码片段需要很长时间才能运行..如何提高效率?