Что курил автор цитаты ниже? http://citforum.ru/programming/c_unix/index.shtml Хрестоматия по программированию на Си в Unix, Андрей Богатырев Цитата: 3.5. Почему может завершаться по защите памяти следующая программа? #include <sys/types.h> #include <stdio.h> time_t t; extern time_t time(); ... t = time(0); /* узнать текущее время в секундах с 1 Янв. 1970 г.*/ Ответ: дело в том, что прототип системного вызова time() это: time_t time( time_t *t ); то есть аргумент должен быть указателем. Мы же вместо указателя написали в качестве аргумента 0 (типа int). На машине IBM PC AT 286 указатель - это 2 слова, а целое одно. Недостающее слово будет взято из стека произвольно. В результате time() получает в качестве аргумента не нулевой указатель, а мусор. Правильно будет написать: t = time(NULL); либо (по определению time()) time( &t ); а еще более корректно так: t = time((time_t *)NULL); Мораль: везде, где требуется нулевой указатель, следует писать NULL (или явное приведение нуля к типу указателя), а не просто 0.