结构大小包含DLL和EXE之间不同大小的矢量<t> </t>

时间:2010-05-19 03:09:44

标签: dll sizeof stdvector

我遇到这种情况,EXE程序为单个函数调用导入DLL。它通过传递自定义结构并返回不同的自定义结构来工作。到目前为止,它一直工作正常,直到我希望其中一个结构数据成员为向量&lt; MyStruct&gt;

当我在我的程序中执行sizeof(vector&lt; MyStruct&gt;)时,我得到20的大小但是当我从DLL内部执行它时,我得到24的大小。这个大小不一致导致ESP指针错误。

任何人都可以告诉我为什么Vector&lt; MyStruct&gt; DLL中的大小与程序中的大小不同吗?

我已经重新验证了DLL和程序中的结构是相同的。

我很感激有关这个问题的任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

当类有一个向量&lt; ..&gt;时,我遇到类似的问题成员,并具有内联构造函数(在头文件中实现)。 无论DLL是release还是dll版本,就像EXE是发布版本一样,EXE中计算的类的大小比DLL小3个字节,因此堆栈将被破坏。

可以通过以下更改之一解决此问题:

  • 这只发生在VC98(SP6)上。更改为VS2008,问题消失。

  • 将内联构造函数移动到CPP文件,问题消失了 太

我希望有人可以提供更详细的解释。