Сразу укажу специфику машины на Solaris:
Machine hardware: sun4u
OS version: 5.10
Processor type: sparc
Hardware: SUNW,Sun-Fire-V890
Компилятор: cc Sun C 5.9 SunOS_sparc Patch 124867-06 2008/06/10
Простенькая программа чтения строки из файла в структуру:
Здравствуйте, Bystrii_Lis, Вы писали:
B_L>Сразу укажу специфику машины на Solaris: B_L>Machine hardware: sun4u B_L>OS version: 5.10 B_L>Processor type: sparc B_L>Hardware: SUNW,Sun-Fire-V890 B_L>Компилятор: cc Sun C 5.9 SunOS_sparc Patch 124867-06 2008/06/10
B_L>Простенькая программа чтения строки из файла в структуру: B_L>
Здравствуйте, Bystrii_Lis, Вы писали:
B_L>Сразу укажу специфику машины на Solaris: B_L>Machine hardware: sun4u B_L>OS version: 5.10 B_L>Processor type: sparc B_L>Hardware: SUNW,Sun-Fire-V890 B_L>Компилятор: cc Sun C 5.9 SunOS_sparc Patch 124867-06 2008/06/10
B_L>Простенькая программа чтения строки из файла в структуру: B_L>
Здравствуйте, Сергей Мухин, Вы писали:
СМ>Здравствуйте, Bystrii_Lis, Вы писали:
B_L>> fgrt_t usrec;
Тогда и структуру по ссылке надо передавать и принт через указатель делать. А это в рамках заданной архитектуры не гуд. Кстати, так работает, да. Через указатель значит нельзя?
B_L>Тогда и структуру по ссылке надо передавать и принт через указатель делать. А это в рамках заданной архитектуры не гуд. Кстати, так работает, да. Через указатель значит нельзя?
Здравствуйте, Bystrii_Lis, Вы писали:
B_L>Сразу укажу специфику машины на Solaris: B_L>Machine hardware: sun4u B_L>OS version: 5.10 B_L>Processor type: sparc B_L>Hardware: SUNW,Sun-Fire-V890 B_L>Компилятор: cc Sun C 5.9 SunOS_sparc Patch 124867-06 2008/06/10
Думаю, что будет не лишним выделить память для usrec
Ну а кто будет память под usrec выделять? А так оно указывает в куда повезёт, и содержимое читает туда же. Естественно, что при этом перетирается что-то жизненно важное.
Простейшее исправление — поменять тип переменной usrec с fgrt_t * на fgrt_t, а в fread передавать её адрес: &usrec.
Здравствуйте, Bystrii_Lis, Вы писали:
B_L>Ох ты чёрт... Спасибо! B_L>Вот только почему он падал на точке выхода... почему не после fread?
Потому-что это зависит и от операционной системы и от архитектуры. К примеру, в SPARCе в системе с общим адресным пространством, вызов фунукции по нулевому/мусорному адресу не при водит к моментальному падению, а падает только потом, причем не на какой-нить невалидной инструкции, а на невыровненных данных, да ещё и в дампе будет стек кривой. Потом ищи свищи начало вызова.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]