sho*_*osh 4 c++ struct sizeof alignment visual-c++
我有两个单独编译的DLL,一个是从Visual Studio 2008编译的,另一个是从matlab编译的mex文件.
这两个DLL都有一个包含的头文件.当我sizeof()在一个DLL中获取结构时,它返回48,而在另一个DLL中,它返回64.我检查了/Zp开关,并在两个编译中设置为/Zp8.
其他编译器切换可能会影响结构的大小?
结构是一个简单的POCO,没有继承,也没有虚函数.
编辑
结构看起来像这样:
class LIBSPEC SGeometry
{
public:
std::vector<IGeometry> m_i;
uint N;
uint n_im, n_s;
};
Run Code Online (Sandbox Code Playgroud)
在调试中,它sizeof()在发行版中返回56,在mex编译中它是48,来自VS它是64.
我可以告诉matlab在编译mex时使用的确切编译器选项,所以它不是它.
编辑
用offsetof检查后,结果发现差异在于std::vector.在一个dll中它是32,而在另一个
dll中它们是48. 这两个dll都是x64.