编译器,内存布局的小问题求解
假定有2个不同类型的编译器,分别是A,B,有个class C,在这2种编译器下C对象实例的大小和内存布局都不一样。现用A编译器编译出一个DLL,导出一个全局函数,在函数内部new一个C对象。
问题:分别用A和B编译出的应用程序加载这个DLL,调用这个导出的全局函数,生成的对象其大小和内存布局是一样的吗?
[解决办法]
Dll和APP使用相同的compiler/linker, 不用担心。如果DLL和APP使用不同的编译器,必须保证拥有相同的布局,可以使用PMP模式或针对接口编程。