我有一個32位的.NET程序集,其中PInvokes到C層。我想將此程序集移植到64位。我已經閱讀了許多與移植到64位有關的文檔,所有這些似乎都表明,如果我們要使用結構,我們需要關注對齊。結構對齊到端口代碼爲64位
我有一個關於結構對齊的普遍問題,並且想先澄清一下,這樣我就不會錯過任何東西。
假設我有一個C入口點,它接受一個結構指針並基本填充裏面的值。這個C代碼沒有任何裝箱指令,我把所有的.NET結構都對齊到pack = 8。所以如果我傳遞一個結構與相鄰的整數,我認爲這可能是一個問題,解釋在.NET層中填充的數據,因爲默認情況下C會使用pack = 4,我們在.NET中將結構解釋爲pack = 8層,所以認爲它可能會導致一個問題。但似乎並非如此。數據似乎被解釋得很好。
任何人都可以解釋這種行爲?
感謝, NIRANJAN