История изменений
Исправление Dudraug, (текущая версия) :
Ты все еще несешь чуть, но ок объясню мы имеем две структуры.
{int,short}
{int, {short, short}}
И мы копируем побайтно из первой во вторую кол-во байт равное размеру первой. Значение второго short во вложенной мне до лампочки. (Вообще. Хоть будь там мусор, а не 0. ЗАЧЕМ ты показываешь, что второго шорта в первой нет? Думаешь я не в курсе?) И это работает(хоть и не по стандарту), хоть на 32, хоть на 64 битах. Потому что выравнивание short будет одинаковым в обоих случаях. Но я таки привел не совсем верный пример, но, как я сказал выше, телепаты меня поняли. На деле кейс такой:
{int, short}
{int, {short, short,....,{....,char*}}
Код изначально кривой и он уже переписан. Но идея топика в том, чтобы ПОНЯТЬ причины такого поведения, а не найти фикс. Инженеры не только фиксят, что не работают, но и пытаются понять почему не работало.
А ты рассказал вещи которые и так всем понятны, но к вопросу отношения не имеют.
Исходная версия Dudraug, :
Ты все еще несешь чуть, но ок объясню мы имеем две структуры.
{int,short}
{int, {short, short}}
И мы копируем побайтно из первой во вторую кол-во байт равное размеру первой. Значение второго short во вложенной мне до лампочки. (Вообще. Хоть будь там мусор, а не 0. ЗАЧЕМ ты показываешь, что второго шорта в первой нет? Думаешь я не в курсе?) И это работает(хоть и не по стандарту), хоть на 32, хоть на 64 битах. Потому что выравнивание short будет одинаковым в обоих случаях. Но я таки привел не совсем верный пример, но, как я сказал выше, телепаты меня поняли. На деле кейс такой:
{int, short}
{int, {short, short,....,{....,char*}}
Код изначально кривой и он уже переписан. Но идея топика в том, чтобы ПОНЯТЬ причины такого поведения, а не найти фикс. Инженеры не только фиксят, что не работают, но и пытаются понять почему не работало.
А ты рассказал вещи которые и так всем понятны, но к вопросу отношения не имеют.