gpt4 book ai didi

c++ - RtlValidateHeap 问题

转载 作者:太空狗 更新时间:2023-10-29 19:50:43 24 4
gpt4 key购买 nike

我有一个 Windows DLL,它在某一时刻返回一个指向在 DLL 代码中新建的类的指针。该类本身是 DLL 私有(private)的另一个类的非常薄的包装器。

调用可执行文件使用此类没有问题,一切正常,但当调用可执行文件尝试删除此类时,出现 RtlValidateHeap 错误。

错误背后的原因是有道理的,exe 试图释放 DLL 堆上的内存,这通常是一件坏事。

我想出了一些可能的解决方案:

  • 覆盖类的新运算符以分配它的内存可执行文件的堆(前提是我可以甚至到达那个堆空间)。包装器非常薄,所以我只会从 exe 的堆中分配几个字节。
  • 提供特殊的破坏此类的功能(讨厌)。
  • 告诉用户不要破坏上课并忍受泄漏(绝不!)

是否有“正常”的方式来做到这一点?

最佳答案

大多数使用这种功能的库,无论是 C 还是 C++,实际上都选择了第二个选项 - 用于获取和释放对象的特定函数。它允许分发不必与调用可执行文件完全相同地编译的二进制 DLL。

关于c++ - RtlValidateHeap 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1007188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com