Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2016, 18:32   #1
ponchic
Пользователь
 
Регистрация: 23.08.2015
Сообщений: 34
По умолчанию Перестала работать моя программа

я никаких изменнений не вносил, просто тупо везде где можно стала выкидывать исключения и ошибки чтения из памяти,
в основном на

1
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
в файле dbgdel.cpp и на

1
if(retval == 0) { ...
в файле free.c
И если повезёт то в
OutputDebugString(e);
в моей функции

Код:
char * GetPageUrl(char * strurl) {
 
 
    HINTERNET hSession = InternetOpen((LPCSTR)GetId(), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
    HINTERNET hConnect = InternetOpenUrl(hSession, strurl, NULL, 0, INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE, 0 );
 
    if (hConnect == NULL) {
        //InternetCloseHandle(hConnect); 
        //InternetCloseHandle(hSession); 
        
        return "0";
    }
    // получить размер заголовка
    DWORD  dwInfoLen = 0;
    HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH, NULL, &dwInfoLen, NULL);
 
    // прочитать заголовок
    char* sHeadInfo = new char[dwInfoLen];
    HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH, sHeadInfo, &dwInfoLen, 0);
 
    // размер файла в байтах
    DWORD dwFileSize =  atoi(sHeadInfo);
    delete [] sHeadInfo;
 
    // буфер
    BYTE * pFileBuf = new BYTE[dwFileSize];
    BYTE * pBufScan =  pFileBuf;
    //printf("file size: %d\n", dwFileSize);
 
    // читать
    DWORD dwAval, dwRead;
    while (InternetQueryDataAvailable(hConnect, &dwAval, 0, 0))
    {
        if (!InternetReadFile(hConnect, pBufScan, dwAval, &dwRead))
            break;
        if (!dwRead) 
            break;
        pBufScan += dwRead;
 
        //----
        char e[32];
        //sprintf(e, "read bytes: %d \n",  pBufScan - pFileBuf);
        OutputDebugString(e);
    }
 
 
    InternetCloseHandle(hConnect); 
    InternetCloseHandle(hSession); 
 
    return (char *)pFileBuf;
 
}
Что это такое и как лечить? Может у кого-то есть темпоральный передатчик чтобы послать мне в прошлое сигнал чтобы я начал быстрее всё заканчивать?
Или из-за электромагнитного импульса от пендосов все компа в россеюшке повредились?

Последний раз редактировалось Аватар; 01.08.2016 в 20:10.
ponchic вне форума Ответить с цитированием
Старый 01.08.2016, 19:49   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Что будет, если после данных идет что-то еще? InternetQueryDataAvailable вернет true и вы продолжите читать, переполняя буфер.

Я бы на вашем месте следил за количеством считанных байт.

Далее, я подозреваю, что с результатом вы обращаетесь как со строкой, но что-то я нигде не вижу добавление нуля в конец строки.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перестала работать флешка qazwsxedcrfvtgbyhn Компьютерное железо 3 26.08.2015 15:48
Перестала правильно работать БД Zuban C/C++ Базы данных 3 08.06.2012 19:57
Почему программа charles перестала работать в мозиле? EVT Помощь студентам 0 11.08.2011 23:33
перестала работать прога tratat Общие вопросы C/C++ 5 11.04.2010 09:50
флешка перестала работать Dizel883 Компьютерное железо 23 21.02.2010 18:18