The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Глючит прога, !*! rlynx, 06-Фев-05, 22:13  [смотреть все]
  • Глючит прога, !*! XMan, 23:18 , 06-Фев-05 (1)
    • Глючит прога, !*! rlynx, 23:38 , 06-Фев-05 (2)
      • Глючит прога, !*! XMan, 03:54 , 07-Фев-05 (3)
        • Глючит прога, !*! rlynx, 04:00 , 07-Фев-05 (4)
          • Глючит прога, !*! Xenu, 06:13 , 07-Фев-05 (5)
            >>Ну тогда что есть s_users[] и какова длина буфера line. Особенно последнее.
            >>
            >>
            >>Кстати, а где изменяется u_index ? :)
            >
            >Я творчески порезал :-) Он увеличивается, это я тебя могу заверить, проверял,
            >дебажил :-)
            >   char s_users[4][128];
            >   char line[128];
            >
            > u_index++ у меня стоит в цикле while, не работает просто как
            >раз именно этот кусок.

            а что вообще этот код должен делать? нет не в общем, а по шагам.
            TData_LoginInfo *strLogin;
            объявили указатель на структуру

            strLogin=(TData_LoginInfo*) malloc(sizeof(strLogin));
            выделили память под структуру, но размером с указатель. На это уже внимание обратили.

            if((fd = fopen("rreg51.lst", "r"))!=NULL)
            {
            открыли файл на чтение и проверили, что открылось
              fFinish = fopen(fOut, "w" );
            открыли файл на запись, но не проверили. может быть позже есть проверка
              while((fgets(line,100,fd )!=NULL) && (u_index<8100))
              {
            читаем из файла по строкам, пока есть что читать и индекс не превысил 8100
                 sscanf(line,"%s\t%s\t%s\t%s", s_users[0], s_users[1], s_users[2], s_users[3]);
            распихали прочитанное по массиву строк.
                 strLogin=(TData_LoginInfo*) realloc(strLogin, sizeof(strLogin));
            перевыделили память под структуру, но опять размером с указатель
                 strLogin[u_index].login=atoi(s_users[0]);
            записываем хрен знает куда, потому что память выделена на 4 байта, примем что размер указателя 4 байта, а конструкция strLogin[u_index] подразумевает, что по strLogin выделена память под u_index * sizeof(структуры) как минимум.
               }

            • Глючит прога, !*! rlynx, 19:31 , 09-Мрт-05 (6)
              • Глючит прога, !*! XMan, 20:47 , 09-Мрт-05 (7)
                • Глючит прога, !*! rlynx, 21:11 , 09-Мрт-05 (8)
                  • Глючит прога, !*! XMan, 23:32 , 09-Мрт-05 (9)
                    • Глючит прога, !*! rlynx, 00:35 , 10-Мрт-05 (10)
                      • Глючит прога, !*! rlynx, 01:08 , 10-Мрт-05 (11)
                        • Глючит прога, !*! Xenu, 03:38 , 10-Мрт-05 (12)
                          >Блин, под виндами все ок, а под юниксами:
                          >bash-3.00# ./_check
                          >_check in realloc(): warning: junk pointer, too high to make sense

                          а вы man realloc смотрели ?
                          realloc() changes the size of the memory block pointed to by ptr to size bytes.  The contents
                                 will be unchanged to the minimum of the old and new sizes; newly  allocated  memory  will  be
                                 uninitialized.   If  ptr is NULL, the call is equivalent to malloc(size); if size is equal to
                                 zero, the call is equivalent to free(ptr).  Unless ptr is NULL, it must have been returned by
                                 an  earlier  call  to  malloc(),  calloc() or realloc().  If the area pointed to was moved, a
                                 free(ptr) is done.

                          то есть память должна быть уже выделена по передаваемому указателю или если еще не выделили то указатель должен быть NULL.

                      • Глючит прога, !*! XMan, 15:06 , 10-Мрт-05 (13)



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру