veronica b, бред какой-то, извини пожалуйста.
Во-первых, в MSDOS - кратному 16 байтам, в 16-битном PM - 1 байт, в 32-битном - либо 1 байт, либо одна страница. 4 байта нигде не фигурируют.
Во-вторых, что такое CS - знаю: code segment, вот только не знаю, каким боком он оотносится к этой теме. Что такое word - тоже знаю, и это не "количество информации, бит, которыое читает процессор при обращении к памяти", потому как это самое "колличество информации" есть термин, придуманный Вами и однозначно Вами неопределённый. "Количество информации..." определятся (если не используются инструкции некэшированных обращений) в P IV, как размер кэш-строки, и такие обращения всегда выровнены, а вот процессор берёт столько, сколько ему надо для исполнения инструкции, и берёт данные при этом из кеша, след. не с шины. Так что термин "количество информации..."
нуждается в определении, чтобы дальнейший диалог с Вами имел смысл.
В-третьих, размеры данных и их выравнивания не умеют быть причинами Access Violation на x86, если ОСь: !"юзает протект моуд" || !"ставит флаг контроля выравнивания в CR0" || !"не контролирует выравнивание флагом в EFLAGS" || "работает на до i486-процессоре" || !"работает на CPL3 (юзер моуд)". Последние два условия ИМХО не актуальны сегодня, остальные, кроме первого, не актуальны для Windы. Все условия, кроме предпоследнего, неактуальны для Вашей ситуации в 97-м году. Но даже в этом случае будет не Access Violation, а совсем другой эксепшн. Так что придётся потрудиться вспомнить, как это под DOS на i486 можно было нарваться на Access Violation. ИМХО это настолько невероятная ситуация, то мне бы запомнилось на всю оставшуюся жизнь, и я б на каждом форуме и даже каждому попавшемуся мне на глаза программеру рассказывал бы эту страшилку, чтобы не дай бог кто-то ещё попался. Единственное исключение - SSE. Но и в этом случае эксепшнов не будет, просто возьмутся кривые данные, и
может быть будет SSE-эксепшн.
В-четвёртых, если не будет эксешна, невыровненные обращения к памяти вызовут всего лишь потерю производительности.
Итого: причин для Access Violation куча. Одно только их перечисление займёт тут строк ~150. Но скорее всего тут причина Access Violation донельзя банальна и уже упомянута
akaGM-ом.
akaGMЦитата: ну так...
о чём спич эбаут? о прослойке между креслом и клавиатурой...
Интересно было бы посмотреть на поедание шляпы
, но примерчик немного не тот. А вообще, что хотели, то и получили: всё в полном соответствии со стандартом и тем не менее от перемены мест
объявлений слагаемых сумма изменяется. В любой машине, под любой осью, любым компилятором.