У меня есть 32-битная сборка .NET, которая PInvokes в слой C. Я хочу портировать эту сборку на 64-битную. Я прочитал много документов, связанных с портированием на 64-битные системы, и все они, похоже, предполагают, что нам нужно позаботиться о выравнивании, если мы хотим использовать структуры.
У меня был общий вопрос, связанный с выравниванием структуры, и я хотел сначала уточнить его, чтобы я ничего не пропустил.
Предположим, у меня есть точка входа C, которая принимает указатель структуры и в основном заполняет значения внутри. Этот код C не имеет никаких директив упаковки, и у меня все .NET-структуры выровнены по pack = 8. Поэтому, если я передаю структуру со смежными целочисленными значениями, я думаю, что это может быть проблемой при интерпретации данных, заполняемых на уровне .NET, поскольку C по умолчанию будет использовать pack = 4, а мы интерпретируем структуру как pack = 8 в .NET. слой, поэтому думал, что это может вызвать проблемы. Но, похоже, это не так. Данные, похоже, интерпретируются нормально.
Кто-нибудь может объяснить это поведение?
Спасибо,
Niranjan