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

Ответить