On Sun, Mar 14, 2010 at 10:21:54AM +0200, globus wrote: > Вот кусок кода: > > size_t n /*= 0*/; > /* тут пропущены проверки переданных в ф-ю параметров */ > fscanf(f, "%u", &n); > printf("n==%u\n", n); /* для отладки */ > if ((n > K_MAX_ITEMS) || (n == 0)) > { > printf("ERROR: n==%u\n", n); /* тжс */ > *error = K_BAD_SIZE; > goto quit; > } > > if ((stab = malloc(n * sizeof(Stab))) == NULL) > > Код проверки if ((n > K_MAX_ITEMS) || (n == 0)) работает некорректно! Т.е. > fscanf читает из файла, напр., 3, printf его выводит, а if возвращает true, > хотя должен false (K_MAX_ITEMS==1024)! Если убрать этот if, то malloc не может > выделить память (для n==3 всего лишь 432 байта).
А вы собирайте вашу программу с -Wall, и GCC вам любезно расскажет, что с вашим кодом не так. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20100314154201.ga27...@skuller.net