【问题标题】:What if EXE and DLL have different MEMORY ALIGNMENT?如果 EXE 和 DLL 有不同的 MEMORY ALIGNMENT 怎么办?
【发布时间】:2012-09-17 05:54:03
【问题描述】:

在 VC 中,我有一个内存对齐设置为 1 的 DLL 文件,一个 EXE 文件内存对齐设置为默认值(它是 4)。我在 EXE 中使用这个 DLL 的类。不同的内存对齐集是否有任何潜在风险? 非常感谢!

【问题讨论】:

    标签: memory-alignment


    【解决方案1】:

    我假设“内存对齐”是指“结构打包”(/Zp)。是的,如果您的结构需要填充以实现指定的对齐方式,则可能会出现问题,因为这两个模块的填充方式不同。

    【讨论】:

    • 是的,这就是我的意思。填充用于此DLL 的类的方法中,它将在EXE 中调用。它将使用哪种对齐方式?谢谢。
    • 每个模块都将使用它编译时使用的包装。如果一个类或结构是共享的,并且双方做出了不同的填充决定,那么就会发生不好的事情。不确定其中哪一部分不明显。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 2019-12-30
    相关资源
    最近更新 更多