我是 Windows 编程的新手,我刚刚“失去”了两个小时来寻找每个人似乎都知道的错误:您不能在 DLL 的堆上创建对象并在另一个 DLL(或主程序)中销毁它.
我几乎可以肯定在 Linux/Unix 上不是这种情况(如果是,请说出来,但我很确定我做了数千次没有问题......)。
在这一点上,我有几个问题:
1) 静态链接的 DLL 是否使用与主程序不同的堆?
2)静态链接的DLL是否映射在主程序的同一个进程空间?(我很确定这里的答案是肯定的,否则将指针从主程序中的函数传递到 DLL 中的函数是没有意义的)。
我说的是普通/常规 DLL,而不是 COM/ATL 服务
编辑:“静态链接”是指我不使用 LoadLibrary 加载 DLL,但我与存根库链接