Долго и усердно пытаюсь найти, откуда ошибка...
Всё компилится, при запуске — неизвестное исключение...
есть переменная:
void* m_pBuffer;
чуть дальше использую:
DWORD dwLen=strlen((char*)m_pBuffer)+1;
на этой строке вылетает....
это mfc-приложение... вроде, всё объявлено, что нужно...
извиняюсь, если пишу не в тот форум. Что ещё нужно — выложу, хоть весь код...
заранее спасибо всем, кто откликнется)))
Судя по всему, m_pBuffer у тебя не инициализирован. Посмотри его значение в отладчике до вызова strlen.
Найди где ему присваивается значение. Последний, самый важный совет -- думай
Возьми лист бумаги и напиши
причины по которым может возникнуть проблема. Потом проверь все варианты. Попробуй запустить программу на
простых тестах. Обычно этих шагов хватает с лихвой
Здравствуйте, Аноним, Вы писали:
А>Долго и усердно пытаюсь найти, откуда ошибка...
А>Всё компилится, при запуске — неизвестное исключение...
А>есть переменная:
А>void* m_pBuffer;
А>чуть дальше использую:
А>DWORD dwLen=strlen((char*)m_pBuffer)+1;
А>на этой строке вылетает....
А>это mfc-приложение... вроде, всё объявлено, что нужно...
А>извиняюсь, если пишу не в тот форум. Что ещё нужно — выложу, хоть весь код...
А>заранее спасибо всем, кто откликнется)))
быстрей всего неиницилизированная переменная, или ее значение указывает на не читаемую память, или читаемую, но ноль не встретился до конца онной.
а теперь придирки:
1. strlen возвращает size_t
2. текст в примере надо форматировать
3. MSVC проверяет не иниц переменные (если опции соотв). а) во врмя компиляции б) во врмя выполнения
4. из примера не понятно почму m_pBuffer описан как void *, а не char
5. лучше последняя строка выгядит так (т.к. и нотации с m_, p и тп не люблю, но это дело вкуса):
const size_t Length = _tcslen( Buffer ) + sizeof( TChar );