【发布时间】:2011-02-18 10:11:52
【问题描述】:
语言:C++
平台:Windows Server 2003
我有一个调用 DLL 的 exe。
编辑: (exe 没有做任何事情,它调用了一些全局函数,这些函数在 DLL 中完成与 DLL 相关的所有事情。它没有明确地new任何 DLL 类)
我在 DLL 中为 class A 分配(new)内存,它返回给我一个非本地堆指针。
我尝试new DLL 中的其他类(在 DLL 中),“new”为它们返回一个有效的堆指针,它唯一的 Class A 是没有被正确分配。
我在 Windows 上并通过此函数调用验证堆:
编辑:
ClassA* pA = new ClassA();
_CrtIsValidHeapPointer ( (const void *) pA )
我很困惑为什么这只发生在 new-ing Class A 而没有其他类?
(所有本机代码)
最终编辑:
结果证明这是一个糟糕的构建。无法让它在新版本中重现...浪费了 5 天时间:'(
【问题讨论】:
-
非常有趣的问题; A 类是导出的,其他类不是吗?
-
您必须向我们展示 A 类的链接,即它是 DLL 内部类吗?另外,请出示声明。
-
@DeadMG,链接是什么意思?你想看看我如何链接那个 DLL 吗?
标签: c++ windows pointers heap-memory